mod_rewrite援助

时间:2010-01-26 09:25:00

标签: wordpress mod-rewrite

我需要一些关于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 已经表明了。所以我需要你的帮助。非常感谢!

3 个答案:

答案 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