构建应用程序时隐藏 .php 扩展名的正确方法
Proper way to hide .php extension while building an Application
对于最后一个网站项目(带有 AJAX + PHP 联系表的基本网站),我使用了下面的 .htaccess
文件来隐藏扩展。它在 Hostgator 服务器上完美运行。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ .php [L]
现在我要构建一个新的应用程序(功能和动态)。我将 .htaccess
文件复制到我的 localhost/appfolder/ (WAMPserver)。还启用了 rewrite_module
。但是由于某种原因它在本地主机上不起作用。
检查我在尝试 运行 本地主机上与上述 .htaccess
相同的网站时获得的错误消息(在实时服务器上运行但不是在本地主机上)
**Not Found**
The requested URL /services.php was not found on this server.
Apache/2.4.9 (Win32) PHP/5.5.12 Server at localhost Port 80
我应该添加什么还是我做错了。 实现该目标的正确方法是什么。你们是怎么做到的?
要使其在子目录 appfolder
上工作,您需要替换:
RewriteBase /
来自
RewriteBase /appfolder/
否则显示的代码将尝试在站点的根目录中查找任何 .php
文件。
对于最后一个网站项目(带有 AJAX + PHP 联系表的基本网站),我使用了下面的 .htaccess
文件来隐藏扩展。它在 Hostgator 服务器上完美运行。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ .php [L]
现在我要构建一个新的应用程序(功能和动态)。我将 .htaccess
文件复制到我的 localhost/appfolder/ (WAMPserver)。还启用了 rewrite_module
。但是由于某种原因它在本地主机上不起作用。
检查我在尝试 运行 本地主机上与上述 .htaccess
相同的网站时获得的错误消息(在实时服务器上运行但不是在本地主机上)
**Not Found**
The requested URL /services.php was not found on this server.
Apache/2.4.9 (Win32) PHP/5.5.12 Server at localhost Port 80
我应该添加什么还是我做错了。 实现该目标的正确方法是什么。你们是怎么做到的?
要使其在子目录 appfolder
上工作,您需要替换:
RewriteBase /
来自
RewriteBase /appfolder/
否则显示的代码将尝试在站点的根目录中查找任何 .php
文件。