我的一個.htaccess重寫代碼有問題: 服務器詳細信息: 服務器運行LiteSpeed Web服務器不是Apache,根據我的主機提供商,它與apache mod_rewrite完全兼容。
問題: 我得到500內部服務器錯誤,當我使用此代碼:.htaccess 500錯誤。 RewriteRule不能正常工作
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).mysite.com$ [NC]
RewriteRule ^(.*)$ %2/$1 [L,QSA,NC]
</IfModule>
當我使用此代碼,它幾乎做什麼它是假設這樣做將流量重定向從任何子域名轉讓給對應的子文件夾也有文件請求。沒有錯誤,沒有什麼它可以正常工作,但它也改變了我不希望的瀏覽器地址。
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).mysite.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/%2/$1 [L,QSA,NC]
</IfModule>
任何想法?
Editetd:我想提到的一件事是,我使用通配符DNS子域不會真正存在。 再次編輯:RewriteRule ^(。*)$%2/index.php [L,QSA,NC]如果我使用這個規則,並嘗試訪問http://sub.mysite.com/whatever它succesfuly重定向到http://mysite.com/sub/index.php我不明白爲什麼它當我改變它們時,我不能使用$ 1而不是index.php,我得到500內部服務器錯誤。
現在得到了解決:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase/
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{HTTP_HOST} ^(.*)mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.* [NC]
RewriteRule ^(.*)$ http://www.%1mysite.com/$1 [R=301,L,QSA] [NC]
RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).mysite.com$ [NC]
RewriteCond %2==$1 !^(.*)==\1
RewriteRule ^(.*) %2/$1$2$3 [L,QSA,NC]
</IfModule>
500錯誤檢查錯誤日誌 - 他們會告訴你一切。 – Cheery