不确定这是否是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
有人能帮忙吗?
使用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
?(
或者,您可以尝试重写到底层的"普通"永久链接。即显式传递CCD_ 17。这与重写为%postname%
不同,因为WP不需要检查REQUEST_URI
来路由URL。例如:
RewriteRule ^sale$ /index.php?p=123 [L]
其中123
是您的discount-page
的%post_id%
。通过直接重写到index.php
,您有效地绕过了WP的前控制器。
注意,这必须在.htaccess
(也称为前端控制器(中的标准WordPress指令之前。
然而,我仍然觉得应该有一种更像WordPress的方式来做这件事,这就是为什么我最初建议在WordPress堆栈上问这个问题。但是,如果你这样做了,就不要提".htaccess"。你真正创建的是一个URL别名或类似的东西。例如:有两个不同的URL显示主页