漂亮的固定链接不起作用 - WordPress Tomcat
Pretty Permalinks not working - WordPress with Tomcat
感谢某人的奇怪要求,我设法用 Tomcat 9 为 WordPress 提供服务。在 PHP/Java Bridge.
的帮助下一切正常
但是,当在 WordPress 中启用漂亮的永久链接时,我无法从主页跟踪任何链接(当单击链接时它显示 "No input file specified",但普通的 URLs 工作正常)。我认为问题是重写URL。
继 Tomcat documentation 重写 URLs 之后,我在我的 webapp 的 WEB-INF
目录中创建了 context.xml
和 rewrite.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]
非常感谢任何帮助。
我最终使用了 Tuckey UrlRewriteFilter 并删除了 ROOT/WEB-INF/context.xml
和 ROOT/WEB-INF/rewrite.config
。现在 Tomcat 完美地为 WordPress 服务,一切正常。
以下是在 Tomcat 上为 WordPress 设置 UrlRewriteFilter(取自官方网站)的步骤,可能对某些人有用:
DownloadUrlRewriteFilter.jar进入ROOT/WEB-INF/lib/
并关注官网所有instructions/steps。
如果你想使用 .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]
感谢某人的奇怪要求,我设法用 Tomcat 9 为 WordPress 提供服务。在 PHP/Java Bridge.
的帮助下一切正常
但是,当在 WordPress 中启用漂亮的永久链接时,我无法从主页跟踪任何链接(当单击链接时它显示 "No input file specified",但普通的 URLs 工作正常)。我认为问题是重写URL。
继 Tomcat documentation 重写 URLs 之后,我在我的 webapp 的 WEB-INF
目录中创建了 context.xml
和 rewrite.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]
非常感谢任何帮助。
我最终使用了 Tuckey UrlRewriteFilter 并删除了 ROOT/WEB-INF/context.xml
和 ROOT/WEB-INF/rewrite.config
。现在 Tomcat 完美地为 WordPress 服务,一切正常。
以下是在 Tomcat 上为 WordPress 设置 UrlRewriteFilter(取自官方网站)的步骤,可能对某些人有用:
DownloadUrlRewriteFilter.jar进入ROOT/WEB-INF/lib/
并关注官网所有instructions/steps。
如果你想使用 .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]