我想要做的是删除网址所需的php文件扩展名
即。 myipaddress / abc - > myipaddress / abc.php
但是我似乎无法使用this link中的解决方案来使用mod_rewrite。
我的.htaccess文件包含以下行:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1c.php [L]
因此,如果我的服务器上有一个名为abc.php的文件,而浏览器中的我的网址是" myipaddress / ab",则会正确显示abc.php。无法找到的任何文件都会返回内部服务器错误(因为第三个cond已被注释掉)。
在这种情况下,我可以使用它:
myipaddress / ab - > myipaddress / abc.php
现在,如果我像这样更改最后一行(这是提供的答案):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
现在,如果我有一个名为abc.php的文件并且我放入myipaddress / abc,我会找到一个未找到404的文件
Not Found
The requested URL /abc was not found on this server.
如果我查找其他链接,例如abcd.php,这不在我的服务器上,我仍然会收到500内部服务器错误。但是,当我尝试像myipaddress / name这样的链接,如果name.php在我的服务器上,我得到404.我很惊讶如果url包含name,mod_rewrite将不会重写url并且有花了好几个小时。有人可以帮忙吗?
答案 0 :(得分:0)
听起来您在系统上启用了自动内容协商。你想禁用它。
查看文档。它编写得很好,并附带了许多很好的例子:
http://httpd.apache.org/docs/current/content-negotiation.html