Url重写和重新更正不起作用(完全)


Url rewriting and redirrecting not working (quite)

我的主文件夹中安装了WordPress,所以我的网站就像一样

www.example.com

此外,我有一个子文件夹,有一个单独的静态网站,你可以用访问

www.example.com/special

所以在特殊页面中,我有一个名为的页面

www.example.com/special/my-special-page

它实际上是一个.php文件,但我已经用这个删除了那个特殊站点的.htaccess文件中的扩展名

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^'.]+)$ $1.php [NC,L]

这是有效的。

但我的客户说:我想,当我进入

www.example.com/myawardspage

www.example.com/special/my-special-page

但是要有上面的URL(没有/special/my-special-page)。所以在主.htaccess文件(控制WordPress的文件)中,我添加了

RewriteRule ^myawardspage?$ http://www.example.com/special/my-special-page [NC,L]

所以现在当你去

www.example.com/myawardspage

我被重定向到

www.example.com/special/my-special-page

这很好,但我需要URL看起来像

www.example.com/myawardspage

所以在特殊页面的.htaccess文件中,我添加了

RewriteRule ^myawardspage/?$ /special/my-special-page [NC]

但是URL保持不变(http://www.example.com/special/my-special-page)。

我在这里做错了什么?

RewriteEngine on的正下方,在/.htaccess(文档根)文件中放置以下行:

# Check if the file being requested exists
# in the 'special' directory
RewriteCond %{DOCUMENT_ROOT}/special/$1.php -f
# If so, then rewrite accordingly:
RewriteRule ^([^.]+) special/$1.php [L]

使用此方法意味着您不需要在special/.htaccess文件中使用该规则-您可以安全地删除它。

好吧,你的意思是,当你想点击www.example.com/myawardspage时,你想从www.example.com/special/my-special-page获取数据,而在地址栏中,你的地址仍然是www.example.com/myawardspage。要实现这一点,请在你的WordPress安装的.htaccess文件中应用此规则。

RewriteRule    ^myawardspage/?$    www.example.com/special/my-special-page    [NC,L]    # Handle requests for "www.example.com/special/my-special-page"

它会为你提供所需的数据,你的问题就会得到解决。如果这对你有用,请告诉我。