我正在使用这个重写:
RewriteRule ^page/([^/]*)$ http://example.com/page?q=$1 [QSA,L]
如果我转到example.com/page/somePage
,我会被重定向到example.com/page?q=somePage
但我不想重定向,我想要的是始终为example.com/page/somePage
的网址
怎么做?
谢谢
我删除了http://example.com但它不起作用,我找不到Page。
我在我的网站上使用Wordpress,这是我完整的.htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^page/([^/]+)/?$ page?q=$1 [L]
# 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
答案 0 :(得分:1)
每当您在要重写的路径的开头指定http://
时,Apache将始终强制301重定向到新URL,无论该URL是否在同一网站上或不。只需删除http://example.com
部分就可以解决您的问题。
至于未找到的页面,是否有另一个RewriteRule告诉“page”将被处理为“page.php”或类似的东西?你是否保存了没有扩展名的PHP文件?
那么你的问题是你肯定需要删除[L]
标志,因为你告诉Apache不再处理该请求的RewriteRules,因此它永远不会查看WordPress重写,因为该规则已经执行并且Apache被告知应该是最终规则。我建议将[QSA]
留在行中,这不会影响脚本的整体结果。