我有一个相对复杂的 .htaccess 文件来控制页面请求,目前这会将所有文件请求(具有某些类型排除项)重定向到索引文件,但一个包含 WordPress 安装的目录除外。
我现在需要启用 WordPress PermaLink 支持,但我在修改 .htaccess 以使其工作时遇到了一些困难。
PermaLinks 需要生成对 SEO 更友好的 URL,它们通常由 WordPress 专门处理 - 但在我的情况下,似乎需要一个 mod-rewrite 规则,如此处详述(否则,启用时它会给出404 响应)。
这是当前的 .htaccess 内容:
RewriteEngine ON
RewriteCond %{HTTP_HOST} !^www\..*
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^([^.]*)\.(co\.uk)
RewriteRule ^.*$ http://www.%1.%2%{REQUEST_URI} [R=permanent,L]
AddHandler application/x-httpd-php .phtml
#RewriteBase /blog/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /blog/index.php [L]
RewriteBase /
RewriteRule ^blog/ - [L]
RewriteRule !\.(js|ico|gif|jpg|JPG|png|css|php|phtml|pdf|txt|xml|swf|flv)$ index.phtml
注释掉的部分是我尝试为 WordPress PermaLink 功能添加规则但未能成功的地方。
最初,我认为这段代码可以正常工作,但实际上一些非 WordPress 请求仍被路由到 blog/index.php 文件,当尝试从博客中跟随链接到其他站点区域时,这些请求再次被路由回博客索引.php。