0

我通过 GoDaddy 有一个共享主机帐户,我在上面的网站使用 .htaccess 通过 index.php 路由所有请求。这本身就可以正常工作。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]

然后我想将其限制为使用非 www url,所以我在它之前添加了以下内容:

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

所以总的来说是:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]

但是,这两者一起不起作用。该 URL 尝试重定向到 /missing.html 以获取应路由的 URL。分开这两个都很好。有没有办法让这两件事一起工作?

4

1 回答 1

0

你应该删除第一个L标签如果你想让它们一起工作。因为L意味着如果规则匹配,则不会处理进一步的规则

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301]   //remove L from this line

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA] 
于 2013-01-11T01:42:15.307 回答