WordPress的重写规则不工作
这是我目前的.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
如果你想在浏览器地址栏中显示更改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
您需要稍微更改规则。这应该允许你使用新的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
让我知道这是如何适用于你。
感谢*。我使用了你的代码,并确实命中(http://example.com/search/?location=&radius_key=sydney&keyword=&geolocation=)。 没有变化。重新加载同一网址(http://example.com/search/?location=&radius_key=sydney&keyword=&geolocation=)。 –
我做到了,所以你可以在浏览器中使用'http:// example.com/massage/sydney /'而不是,反之亦然。不过,我改变了它与两个工作。请检查我更新的答案,你现在要求什么。 –
感谢*。我使用上面的代码。 当搜索指向页面时(搜索/?location =&radius_key = sydney&keyword =&geolocation =)。它没有显示这个网址很好,但问题是,现在它不会将我带到显示的网页内容(search /?location =&radius_key = sydney&keyword =&geolocation =)。现在页面被带到一个新的页面:(列表/ sydney_acupuncture_and_massage_cbd /)。不是页面,我正在寻找和我正在寻找的URL(按摩/悉尼/):( –
我使用了你的代码,并确实命中(http://example.com/search/?location=&radius_key=sydney&keyword=&geolocation=)。 页面显示“内部服务器错误”。 –
我编辑了代码,现在它应该更好。请记住,我刚刚重新安排了您提供的代码,并且应该对其进行调整。 – SimoneLazzaris
它不应该是这样吗? RewriteRule ^/massage /(.*)$ /search/\?.*location=([a-z0-9_.-]+)&.* geolocation = $ 1 [R = 301,L] –