不确定这是否是Stackoverflow的正确部分以问我的问题...
但是这里是:
所以我在.htaccess
文件上使用以下内容:
RewriteEngine On
RewriteRule ^sale?$ /discount-page/
因此,当人们访问example.com/sale
页面时,他们会看到example.com/discount-page/
的内容
但是当我访问example.com/sale
时,它显示404错误,表明该服务器上没有URL /discount-page
...
为什么会这样?
这是我的整个.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
有人可以帮忙吗?
答案 0 :(得分:0)
使用WordPress时,您不能简单地将.htaccess
中的URL重写为%postname%
(真实URL),因为WP仍会查看REQUEST_URI
以便路由该URL 。即使您将/sale
重写为/discount-page/
(实际URL),WordPress仍会看到/sale
(请求的URL)-WP内部不存在;因此是404。
尽管不是您的意图,您可以将其更改为外部重定向以解决此问题(这也避免了潜在的重复内容问题)。例如:
RewriteRule ^sale$ /discount-page/ [R,L]
(我删除了?
中的^sale?$
,因为它看起来确实是错误的。还是您真的要匹配/sale
或/sal
?)
或者,您可以尝试重写基础的“普通”永久链接。即。明确传递%post_id%
。这与重写到%postname%
不同,因为WP无需检查REQUEST_URI
即可路由URL。例如:
RewriteRule ^sale$ /index.php?p=123 [L]
123
是您的%post_id%
中的discount-page
。通过直接重写为index.php
,您可以有效地绕过WP的前控制器。
请注意,此操作必须在.htaccess
(又称前端控制器)中的标准WordPress指令之前 。
但是,我仍然觉得应该有一种更类似于WordPress的方式,这就是为什么我最初建议在WordPress Stack上问这个问题的原因。但是,如果这样做,请不要提及“ .htaccess”。您真正创建的是URL别名或类似名称。例如:Have two different URLs show the homepage