我的所有客户网站都位于子域名目录中:
customers.example.com/sites/customer_name
我想重写网址,以便我的客户只需要编写
customers.example.com/customer_name
我尝试了一些不同的htacces
脚本,但没有一个可行。其中一个给了我一个error 500 internal server error
,所以我的mod_rewrite
是有效的
这是我当前的.htaccess
文件:
RewriteEngine On
RewriteRule ^sites/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301]
RewriteRule ^(.*)$ /sites/$1/ [QSA,L]
答案 0 :(得分:1)
由于重写引擎循环,此模式^(.*)$
将盲目匹配所有内容,包括规则的目标:/sites/something
。它会继续将/sites/
附加到URI的前面,直到您最终得到/sites/sites/sites/sites/sites/sites/sites/
等内容。
您需要添加一些条件来阻止循环,如下所示:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /sites/$1/ [L]
或
RewriteCond %{REQUEST_URI} !^/sites/
RewriteRule ^(.*)$ /sites/$1/ [L]
或
RewriteCond %{DOCUMENT_ROOT}/sites%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/sites%{REQUEST_URI} -d
RewriteRule ^(.*)$ /sites/$1/ [L]
答案 1 :(得分:0)
这应该有用......如果正确理解你的最终目标。但不清楚您是否希望同时从customers.example.com/sites/customer_name
和customers.example.com/customer_name
访问内容:
RewriteEngine on
RewriteRule ^/sites/(.*)$ http://customers.example.com/$1 [L,R=301]