htaccess多个重写规则在XAMPP中不起作用

时间:2018-06-10 18:35:20

标签: php html .htaccess xampp

我目前有两条规则:

第一个替换" 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一起使用。

1 个答案:

答案 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