使用.htaccess更改URL子域/固定链接的一部分而不会导致404

时间:2016-12-23 18:52:35

标签: php wordpress apache .htaccess mod-rewrite

我正在使用WordPress,我有一个这样的网址:

domain.com/my-pages/The+Title/go/

我希望删除'go',并将my-pages更改为书籍,如下所示:

domain.com/books/The+Title

不会导致404错误。

由于我正在使用自定义插件,因此无法通过固定链接。

我在.htaccess尝试过此功能,但不起作用:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteRule ^my-pages/([^\.]+)/go/$ books/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

IIRC在.htaccess路径以斜杠(“/”)开头时,将正则表达式锚定在字符串的开头(“^”符号) :

RewriteRule ^/my-pages/([^\.]+)/go/$ books/$1 [L]
             ^
              `-- missing in your case

您可以使用RewriteBaseApache DOCs控制它,请参阅: