2015-11-04 120 views
0

這是我目前的.htaccess文件的內容:WordPress的重寫規則不工作

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

我想改變:

http://example.com/search/?location=&radius_key=sydney/&keyword=&geolocation= 

到:

http://example.com/massage/sydney/ 

我已經修改腳本下面,但它並沒有改變我的網址。你能指導我嗎?任何形式的解決這個問題的反應是高度讚賞。由於

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/massage/(.*)$ /search/? location=&radius_key=$1&keyword=&geolocation= 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

回答

0

如果你想在瀏覽器地址欄中顯示更改URL,你必須激活modrewrite的「R」標誌,該激活重定向。

所以你喜歡寫東西

RewriteRule /search/\?.*location=([a-z0-9_.-]+)&.* geolocation=$1 [R=301,L] 

我建議也在兩個部分分裂的配置,以保持原來的WordPress的配置不變。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule /search/\?.*location=([a-z0-9_.-]+)&.* geolocation=$1 [R=301,L] 
</IfModule> 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 
+0

我使用了你的代碼,並確實命中(http://example.com/search/?location=&radius_key=sydney&keyword=&geolocation=)。 頁面顯示「內部服務器錯誤」。 –

+0

我編輯了代碼,現在它應該更好。請記住,我剛剛重新安排了您提供的代碼,並且應該對其進行調整。 – SimoneLazzaris

+0

它不應該是這樣嗎? RewriteRule ^/massage /(.*)$ /search/\?.*location=([a-z0-9_.-]+)&.* geolocation = $ 1 [R = 301,L] –

0

您需要稍微更改規則。這應該允許你使用新的URL和你的WordPress規則。

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteCond %{THE_REQUEST} ^GET\ /search/\?location=&radius_key=([^\ &]+)&keyword=&geolocation= 
RewriteRule^/massage/%1? [R=301,L] 

RewriteRule ^massage/([^/]+)/?$ /search/?location=&radius_key=$1&keyword=&geolocation= [L] 

RewriteRule ^index\.php$ - [L] 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

讓我知道這是如何適用於你。

+0

感謝巴拿馬。我使用了你的代碼,並確實命中(http://example.com/search/?location=&radius_key=sydney&keyword=&geolocation=)。 沒有變化。重新加載同一網址(http://example.com/search/?location=&radius_key=sydney&keyword=&geolocation=)。 –

+0

我做到了,所以你可以在瀏覽器中使用'http:// example.com/massage/sydney /'而不是,反之亦然。不過,我改變了它與兩個工作。請檢查我更新的答案,你現在要求什麼。 –

+0

感謝巴拿馬。我使用上面的代碼。 當搜索指向頁面時(搜索/?location =&radius_key = sydney&keyword =&geolocation =)。它沒有顯示這個網址很好,但問題是,現在它不會將我帶到顯示的網頁內容(search /?location =&radius_key = sydney&keyword =&geolocation =)。現在頁面被帶到一個新的頁面:(列表/ sydney_acupuncture_and_massage_cbd /)。不是頁面,我正在尋找和我正在尋找的URL(按摩/悉尼/):( –