1

我想为我的插件页面使用自定义永久链接结构,所以我使用 add_rewrite_tag 和 add_rewrite_rule 来完成此操作。在我的本地开发服务器上一切正常,但在我的网络服务器上,我无法让 WordPress 正确重定向。

使用 add_rewrite_rule 后,我的 htaccess 文件将更新为以下行:

RewriteRule ^portfolio/([^/]*)/? /site/index.php/portfolio/?portfolio_item=$1 [QSA,L]

在我的开发服务器上,如果我转到 URL 127.0.0.1/site/portfolio/testing/,这可以正常工作。当我访问 www.mydomain.com/site/portfolio/testing/ 时,在我的网络服务器上,我不断收到“这有点尴尬,不是吗?” 屏幕。在我刷新我的重写规则之前,我在本地开发服务器上也遇到了这个错误。在 Web 服务器上刷新重写规则没有帮助。

如果我输入 URL www.mydomain.com/site/index.php/portfolio/?portfolio_item=1 它工作正常,所以问题一定是 RewriteRule 没有正确重写。但是经过多次测试,我可以看到重写规则很好。这是WordPress的东西。

为了测试,我创建了一个 phpinfo.php 文件并将 RewriteRule 更改为:

RewriteRule ^portfolio/([^/]*)/? /site/phpinfo.php [QSA,L]

这行得通。所以我有点困惑为什么我的网络服务器上的 WordPress 不遵守这个 RewriteRule,但只有在重定向到 index.php 时才遵守。或者也许它是并且有什么干扰?我基本上被难住了,我已经尝试调试一整天了。我真的可以使用一些帮助...

编辑:这是完整的 .htaccess 文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /site/
RewriteRule ^index\.php$ - [L]
RewriteRule ^^portfolio/([^/]*)/? /site/index.php/portfolio/?portfolio_item=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /site/index.php [L]
</IfModule>
# END WordPress
4

1 回答 1

0

对于任何有类似问题的人,我已经弄清楚了。基本上,我正在重写一个已经重写的 URL。原文改写:

RewriteRule ^portfolio/([^/]*)/? /site/index.php/portfolio/?portfolio_item=$1 [QSA,L]

改为:

RewriteRule ^portfolio/([^/]*)/? index.php?page_id=31&portfolio_item=$1 [QSA,L]
于 2013-07-10T11:27:21.323 回答