【问题标题】:Pretty Permalinks not working - WordPress with Tomcat漂亮的固定链接不起作用 - 带有 Tomcat 的 WordPress
【发布时间】:2019-02-16 06:02:27
【问题描述】:

感谢某人的奇怪要求,我设法使用 Tomcat 9 为 WordPress 提供服务。在 PHP/Java Bridge 的帮助下一切正常。
但是,当在 WordPress 中启用漂亮的永久链接时,我无法访问主页上的任何链接(当单击链接时,它显示“未指定输入文件”,但纯 URL 可以正常工作)。我认为问题在于重写 URL。

在 Tomcat documentation 重写 URL 之后,我在我的 webapp 的 WEB-INF 目录中创建了 context.xmlrewrite.config,但仍然没有运气。以下是文件:

ROOT/WEB-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Context>

ROOT/WEB-INF/rewrite.config

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

非常感谢任何帮助。

【问题讨论】:

  • 你开启调试模式了吗?
  • @ZaheerAbbas 是的,但无济于事。问题是 php-cgi 找不到要运行的脚本。
  • 这可能会对您有所帮助。 wiki.metawerx.net/wiki/InstallingWordPressOnTomcat
  • @ZaheerAbbas 该方法使用 Quercus 并且已过时。 PHP/Java Bridge 比 Quercus 更好,唯一的问题是漂亮的永久链接不起作用。

标签: wordpress tomcat url-rewriting php-java-bridge


【解决方案1】:

我最终使用了 Tuckey UrlRewriteFilter 并删除了 ROOT/WEB-INF/context.xmlROOT/WEB-INF/rewrite.config。现在 Tomcat 完美地为 WordPress 提供服务,一切正常。

以下是在Tomcat上为WordPress设置UrlRewriteFilter(取自官方网站)的步骤,这可能对某人有用:

DownloadUrlRewriteFilter.jar 到ROOT/WEB-INF/lib/ 并按照其官方网站上的所有说明/步骤操作。 如果您想使用 .htaccess 语法来定义重写规则,那么您可以在ROOT/WEB-INF/web.xml 中将参数modRewriteConf 设置为true,如下所示:

<!-- URLRewriteFilter -->
<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>modRewriteConf</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

然后在ROOT/WEB-INF/ 目录中创建一个.htaccess 文件(可以放在其他地方,但您必须通过web.xml 中的参数指定路径)。

注意:我必须注释掉 RewriteRule 才能使其成功运行。

RewriteEngine On
RewriteBase /
# RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

【讨论】:

    猜你喜欢
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多