我已经创建了一个站点的子域。子域指向根上的文件夹。
由于某些原因,以下重写规则不起作用。两个段 url 正在工作。一个不工作,两个以上不工作。请参阅下面的网址。
subdomain.domain.com/register
(不工作)subdomain.domain.com/temp/register
(工作)
当我有两个动态创建的段时,它们不起作用。
subdomain.domain.com/dynamic1/dynamic2
(不工作)
.
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
#FOR REPLACING .HTML EXTENSION (WORKS FINE)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
#FOR REPLACING .PHP EXTENSION (NOT WORKING)
RewriteRule ^([a-zA-Z0-9_-]+)$ $1.php
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ $1.php
如果您不明白这个问题,请告诉我。
最佳答案
正如 Michael Berkowsk 所建议的那样,您可能希望将 L
标志添加到规则的末尾,以便在应用规则后结束重写。除此之外,您拥有的 2 段规则仅使用第一个作为反向引用,我假设您想同时使用两者?尝试将您的规则更改为如下所示:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
# the HTTP redirect
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R]
#FOR REPLACING .HTML EXTENSION (WORKS FINE)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
#FOR REPLACING .PHP EXTENSION
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ location.php?li_id=$1&lid=$2 [L]
关于.htaccess - htaccess 重写规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940567/