我需要一些关于mod_rewrite的帮助,
这是我的wordpress地址:
http://localhost/my_v2010/restaurants?m=display_Add
base_url:http://localhost/my_v2010/
POST_NAME:餐厅
查询字符串:?m = display_Add
我想使用重写模式,让用户输入
http://localhost/my_v2010/restaurants/display_Add
任何线索如何写入.htaccess?
我试过
RewriteEngine On
RewriteBase /my_v2010/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my_v2010/index.php [L]
RewriteRule ^restaurants/([^/]+)/?$ restaurants?m=$1 [L]
但没有运气,它没有表现出什么 http://localhost/my_v2010/restaurants?m=display_Add 已经表明了。所以我需要你的帮助。非常感谢!
答案 0 :(得分:1)
强制自定义URL重定向回到浏览器,以便WordPress可以理解它:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my_v2010/
RewriteRule ^restaurants/([^/]+)/?$ restaurants?m=$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my_v2010/index.php [L]
</IfModule>
# END WordPress
这会将请求重写为预期的格式,然后再次通过,将其传递给WordPress的index.php页面。
答案 1 :(得分:0)
尝试重新排序您的规则。 [L]标签表示它是最后一个运行的规则。
答案 2 :(得分:0)
我改为
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my_v2010/
RewriteRule ^restaurants/([^/]+)/?$ restaurants?m=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my_v2010/index.php [L]
</IfModule>
# END WordPress
它找不到404。
所以我认为是 http://localhost/my_v2010/restaurants/display_Add 最终不喜欢 http://localhost/my_v2010/restaurants?m=display_Add
我仍然能够得到 http://localhost/my_v2010/restaurants?m=display_Add运行,但是 不 http://localhost/my_v2010/restaurants/display_Add