2015-11-04 93 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(按摩/悉尼/):( –