2009-04-30 60 views
0

我正在本地開發應用程序(在域名<mydomain> .dev)。mod_rewrite:爲什麼它在本地工作而不是在線?

爲了與友好的URL的工作,我已經建立了我的.htaccess這樣的:

RewriteEngine on 
# Externally redirect to add missing trailing slash 
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L] 
RewriteRule ^about/$ about.php [NC,L] 
RewriteRule ^issues/$ issues.php [NC,L] 
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L] 

SetEnv PHP_VER 5 
IndexIgnore * 
Options +FollowSymLinks 

它工作正常。煩人的是,當上線時,它不是很好:

http://example.com/issue/my-slug/#23返回沒有GET變量。爲什麼?

+0

會是怎樣正確的重定向目標http://mydomain.eu/issue/my-slug/#23? – pts 2009-04-30 22:36:43

回答

0

我的猜測,基於過去的經驗是RewriteBase,可能是因爲你在共享服務器上,或者其他非標準配置。

RewriteEngine on 

#Set base as doc root. 
RewriteBase/

# Externally redirect to add missing trailing slash 
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L] 
RewriteRule ^about/$ about.php [NC,L] 
RewriteRule ^issues/$ issues.php [NC,L] 
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L] 

SetEnv PHP_VER 5 
IndexIgnore * 
Options +FollowSymLinks 
0

我沒有看到

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L] 

應該匹配的URL,但多數民衆贊成與[R]標誌是唯一一個做一個外部重定向。嘗試對此進行評論,以確保應用程序中沒有其他部分執行重定向。我的猜測是有。

0

替換URL和標誌之間缺少一些空格。您還可以簡化您的第一條規則如下:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L] 
相關問題