2015-07-13 92 views
0

已經繞了幾個小時,真的會感激一點幫助。.htaccess查詢字符串重寫

我想重寫包含查詢字符串(以company.php開頭)的URL。

我找到了一些方法來獲得重寫自身的工作,但它總是顯示了404 :(

比如我需要(例如使用值)重寫:

http://test.domain.com/company.php?companynumber=05614768 

到:

http://test.domain.com/company/05614768/ 

下面是幾個我已經設法做重寫但404ing:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/company\.php$ 
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$ 
RewriteRule ^(.*)$ http://test.domain.com/company/%1/? [R,L] 

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$ 
RewriteRule ^company\.php$ http://test.domain.com/company/%1/? [R,L] 

我猜我需要弄清楚如何做一個內部重定向和外部重定向?但我真的很掙扎......

Centos的6.6 /阿帕奇2.4.12

+0

@mario - 如果我明白,是的,我認爲是。我試圖讓它做內部重定向以及外部重定向(我認爲這是工作)。謝謝 – ColinMcDermott

回答

1

現在,如果這是你的新老對重定向:

RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$ 
RewriteRule ^company\.php$ http://test.domain.com/company/%1/? [R,L] 

然後通過重新映射新進入的網址:

RewriteRule ^company/(\d+)/?$ company.php?companynumber=$1 [END] 

需要注意的是這樣的:

  • 此後必須是規則
  • 應攜帶[END]標誌以避免再次進行內部重寫。
  • 只允許數字\d+佔位符。

另請參閱Reference: mod_rewrite, URL rewriting and 「pretty links」 explained上的「乒乓改寫」。這些重寫只能用作臨時措施。在您的HTML模板中正確建立新的網址。

+0

非常感謝你@Mario!我會嘗試使用上述現在並報告回來。非常感激。 – ColinMcDermott

+0

工作。非常感謝!你在2分鐘內完成了幾個星期的工作。再次感謝! – ColinMcDermott