2013-10-04 48 views
1

我已經意識到,我的.htaccess中的一些301重定向不起作用,因爲PHP變量,但在這裏閱讀了多篇文章,關於如何克服它我來了得出的結論是,我太厚,無法弄清楚我需要使用的確切代碼。如何處理301重定向爲php變量

如果某個天才能爲我拼出來,那會很棒。

這裏是一個什麼樣的工作不

Redirect 301 /detail.php?prod_id=100 http://www.domain.com/new-url/ 

請讓我知道確切的代碼,我需要在Apache這項工作的例子。我有大約100個網址,每個網址都有唯一的ID。

UPDATE 這裏是我現有的代碼完全從我的.htaccess文件

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteRule (.*) http://www.domain.com/$1 [R=301,L] 
Options +FollowSymLinks 
RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L] 

UPDATE

,與我以前的版本的.htaccess的工作確定,但因爲我去住了我的WordPress版本我網站的代碼似乎殺了我的.htaccess文件,它具有標準的wordpress信息,我將如何適應上述301代碼到這個?

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
</IfModule> 

# END WordPress 

回答

2

QUERY_STRING canot可以使用Redirect指令進行匹配。使用mod_rewrite代替:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} (^|&)prod_id=100(&|$) [NC] 
RewriteRule ^detail\.php$ http://www.domain.com/new-url/? [L,R=301,NC] 

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteRule^http://www.domain.com%{THE_REQUEST} [R=301,L] 

# BEGIN WordPress 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
# END WordPress 
+0

謝謝,但它似乎與現有的代碼衝突。這是我現在擁有的。 RewriteEngine敘述上 的RewriteCond%{HTTP_HOST} ^!萬維網\。域\ .COM 重寫規則(。*)http://www.domain.com/$1 [R = 301,L] 選項+了FollowSymLinks 的RewriteCond% {._requEST} ^。*/index \ .php RewriteRule ^(。*)index.php $ http://www.domain.com/$1 [R = 301,L] – user2692160

+0

嘗試發佈您的代碼,它的評論不可讀。 – anubhava

+0

還提供一些簡要的總結你現有的規則正在做什麼? – anubhava