首页 > 解决方案 > .htaccess 重写漂亮的 URL 而不会影响默认页面

问题描述

我有一个www.example.com加载默认值的网站index.php page。我也有一个login.php我设置了这个重写规则的。

一切正常,但是当我尝试访问www.example.com它时,它会将我重定向到login.php.

我想在不影响默认页面的情况下保留规则。请看下文。如果有人有任何想法,那就太好了。

# ensure permalink when url rewriting was enabled (login.php?r=content/perma&id=6 => /content/perma/?id=6

RewriteCond %{QUERY_STRING} ^r=content(/|%2)perma&id=([0-9]*)$
RewriteRule ^login\.php$ %{REQUEST_URI}/content/perma/?id=%2 [R=302,L]

RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]

# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]

RewriteRule .? %{ENV:BASE}/login.php [L]

标签: phpapache.htaccess

解决方案


您可以在站点根目录 .htaccess 中使用此代码:

# ensure permalink when url rewriting was enabled 
# (login.php?r=content/perma&id=6 => /content/perma/?id=6

RewriteEngine On

RewriteCond %{QUERY_STRING} ^r=content(/|%2)perma&id=([0-9]*)$
RewriteRule ^login\.php$ %{REQUEST_URI}/content/perma/?id=%2 [R=302,L]

# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . login.php [L]

推荐阅读