2012-10-04 69 views
0

由於某些Drupal問題,我有一個奇怪的重寫問題。我不知道如何解決Drupal問題,所以這將是一個臨時修復:Apache mod_rewrite別名到另一個路徑的路徑

路徑/the%20campanile/([0-9]+)/([0-9]+)/(最好使用斜槓可選)應該是/campanile/([0-9]+)/([0-9]+)/的別名。

我已經試過:

RewriteBase/
RewriteRule ^campy/([0-9]+)/([0-9]+)/$ campanile/$1/$2/ 

除了失敗,404(可能重寫錯誤)。我也嘗試過使用通配符(*),但無濟於事。我翻閱了有關StackOverflow和其他一些論壇的大約16篇文章。

整個.htaccess看起來是這樣的:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [QSA] 
RewriteRule ^campy/([0-9]+)/([0-9]+)/$ campanile/$1/$2/ 
RewriteCond %{HTTP_HOST} ^danger-\.palyvoice\.com 
RewriteRule ^(.*)$ /category/blogs/danger-zone [L] 

我在做什麼錯?

回答

1

不確定爲什麼你的正則表達式是^campy/([0-9]+)/([0-9]+)/$當你試圖匹配類似/the%20campanile/([0-9]+)/([0-9]+)/的東西。撇開分組,campy永遠不會匹配%20campanile

你需要記住的是,URI通過mod_rewrite的處理之前進行解碼,這樣你就不會要匹配%20,只是空間:

RewriteRule ^/?the\ campanile/([0-9]+)/([0-9]+)/?$ campanile/$1/$2/ [L] 

您還希望這些規則index.php路由規則,因爲路由規則將改寫之前它獲取到您的其他規則:

RewriteEngine on 
RewriteBase/
RewriteRule ^/?the\ campanile/([0-9]+)/([0-9]+)/?$ campanile/$1/$2/ [L] 
RewriteCond %{HTTP_HOST} ^danger-\.palyvoice\.com 
RewriteRule ^(.*)$ /category/blogs/danger-zone [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [QSA] 
+0

啊,赦免。我將編輯原始問題。爲了避免間距問題,我將其改爲「campy」,直到我得到實際的路線工作,然後將問題隔離開來。否則我不知道它是什麼。謝天謝地,我得到了Drupal組件,不過。 無論如何謝謝你! – tekknolagi