网址重写和重新编写不工作(相当)

时间:2016-05-02 07:07:46

标签: php wordpress apache .htaccess mod-rewrite

我的主文件夹中安装了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

但要包含上述网址(不含/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

这很棒,但我需要网址看起来像

www.example.com/myawardspage

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

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

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

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

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文件中的该规则 - 您可以安全地将其删除。

答案 1 :(得分:0)

好的,所以你的意思是什么时候想要点击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"

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