【发布时间】:2011-12-27 18:23:55
【问题描述】:
我的 .htaccess 文件中有一个 RedirectMatch 规则可以正常工作,但我无法使用 mod_rewrite 提出类似的规则。
我的目标是让这个 URL:mysite.com/anything/print 显示这个页面:mysite.com/anything?view=print。
重定向它的规则是这样的:
RedirectMatch 301 ^(.*)/print/?$ http://mysite.com/$1?view=print
但现在我想将其从可见的 301 重定向更改为使用 mod_rewrite 的“不可见”重写。我已经尝试了许多不同的变体(有和没有 RewriteBase),但都没有奏效:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/print/? $1?view=print
我做错了什么? Mod_rewrite 肯定是启用的,并且在同一个 .htaccess 文件中有基于 Wordpress 的 mod_rewrite 规则。
更新
使用@Nathan 的提示,我现在有了这个。但是,当我访问 mypost/print 时,我仍然会收到 404。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule ^(.*)/print/?$ /index.php/$1?view=print [L]
当我将 /print/ 附加到永久链接时,WP_Debug 插件会指示以下内容:
请求: myposttype/mypost/print
查询字符串: attachment=print
匹配的重写规则: myposttype/[^/]+/([^/]+)/?$
匹配的重写查询: attachment=print
【问题讨论】:
标签: apache .htaccess mod-rewrite