2015-05-04 35 views
2

我有一個難題: 在我的.htaccess中,我有下面的RewriteRules不起作用。mod_rewrite的疑難問題

 

    RewriteRule u/(.*)/ user.php?u=$1 [L,QSA] 
    RewriteRule u/(.*) user.php?u=$1 [L,QSA] 
    RewriteRule user/(.*)/ user.php?u=$1 [L,QSA] 
    RewriteRule user/(.*) user.php?u=$1 [L,QSA] 
    RewriteRule view/(.*)/ view.php?file=$1 [L,QSA] 
    RewriteRule view/(.*) view.php?file=$1 [L,QSA] 
    RewriteRule show/(.*)/ show.php?img=$1 [L,QSA] 
    RewriteRule show/(.*) show.php?img=$1 [L,QSA] 
    RewriteRule report/(.*) report.php?img=$1 [L,QSA] 
    RewriteRule report/(.*)/ report.php?img=$1 [L,QSA] 
    RewriteRule search/tag/(.*) search.php?t=$1 [L,QSA] 
    RewriteRule search/tag/(.*)/ search.php?t=$1 [L,QSA] 
    RewriteRule search/(.*) search.php?q=$1 [L,QSA] 
    RewriteRule search/(.*)/ search.php?q=$1 [L,QSA] 
    RewriteRule bug/view/(.*)/ bug.php?view=$1 [L,QSA] 
    RewriteRule bug/view/(.*) bug.php?view=$1 [L,QSA] 
    RewriteRule bug/(.*) bug.php?step=$1 [L,QSA] 
    RewriteRule bug/(.*)/ bug.php?step=$1 [L,QSA] 

然而,當我進入一個重寫規則作爲

 

    RewriteRule^http://example.com [R, L] 

我會被轉發,所以它的工作原理。

解決方案,如

 

    RewriteRule u/(.*)/ http://example.com/user.php?u=$1 [L,QSA] 

不起作用。

 

    RewriteRule /u/(.*)/ user.php?u=$1 [L,QSA] 

等未成功。

我最近搬到新服務器後出現問題。但是,配置看起來一切正常。

有沒有人有想法我做錯了什麼?

+0

當新的服務器上會發生什麼你訪問'domain.com/u/64 /'?你有沒有找到「文件未找到」或者你是否被重定向到不同的路徑? – Bobulous

回答

1

您是否在尋找可能的答案?

我發現這一點: Why does this RewriteRule work with [R] but not with [QSA,L]?

看來:

FastCGI的版本時,使用Apache 2.2配對似乎並不喜歡 的重寫規則的index.php/$ 1相反,它更喜歡index.php?$ 1,但一些 CMS不喜歡那樣。我正在使用的CMS不喜歡那樣。所以 撤消的評論使用?$ 1是在正確的軌道上,但因爲我有 沒有解釋,而我使用的CMS(開放期刊系統)不是 工作與一個?之後的pathinfo的東西,然後它只是沒有加工。

解決方案是從FastCGI更改爲常規CGI。

檢查該URL下的其他答案,他們有有效的點,這可能會幫助你的情況。

0

對我來說,好像你在使用錯誤的語法。嘗試把你的模式放在雙引號中,看看它是否有效(記住:the pattern in RewriteRule is a Regular Expression)。就像這樣:

RewriteRule "u/(.*)/" "http://example.com/user.php?u=$1" [L,QSA] 

或者更好的辦法是附上圖案:^(如字符串的開始)和$(如字符串的結尾):

RewriteRule ^u/(.*)$ http://example.com/user.php?u=$1 [L,QSA] 
+0

這對我來說看起來很不對勁。我從來沒有見過表達式的引用換行。此外,不需要使用絕對URL。你爲什麼想這麼做? –

+0

@MikeRockett這裏:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa是的替代論據中沒有絕對URL的義務,但我儘可能地保留了他原來的規則。 – Hatef

+0

迷人 - 不知道你可以做到這一點...我幾乎可以發誓,他們以前從未在文檔中使用過......至於絕對URL,只有在有好處時才應使用它們。 –