我目前有两条规则:
第一个替换" domain.com/profile/user"到" domain.com/profile.php?user = user"
第二条规则从所有文件中删除.php,以便无需使用.php即可访问它们。
这是.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteRule ^profile/([^/]+)$ profile.php?user=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
在当前状态下,第一条规则有效,第二条规则不起作用。
但是,如果我添加"选项+多视图"到顶部以便它是:
Options +MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^profile/([^/]+)$ profile.php?user=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
然后第一条规则不起作用而第二条规则有效吗?
我无法弄清楚如何使它们都发挥作用。
注意我正在为Web服务器使用XAMPP vhost并更改了相关设置以允许htaccess与XAMPP一起使用。
答案 0 :(得分:0)
好的,我找到了一个解决方案,不是最好的解决方案,但它确实有效。
我只是将我的.php卸妆程序更改为另一个可以完成相同任务的版本。
我不知道为什么会这样,而其他版本也不行。如果您知道为什么原始的不起作用,请告诉我。
以下是工作版本:
RewriteEngine On
RewriteBase /
RewriteRule ^profile/([^/]+)$ profile.php?user=$1 [L,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
来源:https://www.digitalocean.com/community/questions/how-to-hide-php-extension-in-url-using-htaccess