我编写了一个Wordpress插件,可以在URL中添加查询字符串。但是我似乎无法修改htaccess来重写它。不确定Wordpress是否覆盖了它?
目前的htaccess是:
# 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
我正在尝试重写的网址是:
http://domain.com/deal-info/?id=87&post_name=testdealtitle
所需网址:
http://domain.com/deal-info/87/testdealtitle
我尝试添加:
RewriteRule ^([^/]*)/([^/]*)$ /deal-info/?id=$1&post_name=$2 [L]
无济于事。任何想法都赞赏!
答案 0 :(得分:10)
执行此操作时:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
这意味着:“如果它不是文件,如果它不是dir,则将所有传入的网址重定向到
的 index.php
强>
你的rewriterule应该有效......除非你在之前的之前把它改为。所以,简而言之,你确定你的.htaccess就是这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)/([^/]*)$ /deal-info/?id=$1&post_name=$2 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
请告诉我它是否有效。
此外,如果您只想重定向仅交易信息,您应该执行类似(未经测试)的操作:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(/)?deal-info/([^/]*)/([^/]*)$ /deal-info/?id=$2&post_name=$3 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
请尝试使用RewriteLog
指令:它可以帮助您找出此类问题:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜欢检查regexp的工具:
http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)
我可以请你在你的问题中添加重写吗?
答案 1 :(得分:1)
经过多次困惑后,我在这里找到答案: https://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule
虽然我认为正确的做法是: http://codex.wordpress.org/Rewrite_API/add_rewrite_rule
我不确定你是否可以直接在htaccess中执行此操作,或者我在使用其他插件时遇到冲突问题。
再次感谢Olivier的广泛回答!