我试图在查看php文件时不要求.php
扩展名。我当前的配置如下:
<VirtualHost *:80>
DocumentRoot /var/www/server
ServerName localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteRule ^([^/\.]+)/?$ $1.php [L,QSA]
</VirtualHost>
然而,当我尝试访问login.php这样的文件作为登录时,我没有工作,因为我得到了404。我的服务器设置有点奇怪,在/ var / www / server中是另一个文件夹Dev / server /的符号链接。此外,由于它是本地主机,我通过localhost/project/login.php
访问它。
答案 0 :(得分:1)
如果URI包含路径中的句点,那么正则表达式规则看起来会失败。这是不好的,因为RFC没有说它们无效。
你可以试试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^\\.]+)$ $1.php [NC,L]
对于http://test.com/test/test.test/test.php
http://test.com/test/test.test/test
我会测试它更多。您可能需要查看.htaccess测试器,如下所示:http://htaccess.madewithlove.be/
如果测试需要,REQUEST_FILENAME
可以换出REQUEST_URI
。