我希望非IIS人能为我提供帮助,尽管我遇到的问题是基于运行ISAPI_REWRITER的IIS6服务器。

情况是,我在IIS6上运行WordPress,ISAPI_REWRITER被用来替代MOD_REWRITE,并且正常运行。我的问题是,当我将其重写WordPress的URL(因此我不需要Index.php文件名)时,它显示了一个404。在大量搜索后,我发现问题是因为ASP.NET的一部分(或类似的东西)是在URL的末端添加eurl.axd/[Random String],因此将其馈送到WordPress请求中并打破它。我将WordPress模板设置为输出所请求的URL,看起来像这样:

http://www.example.com/index.php/about/eurl.axd/b5552863f2d5e9841b5d8b79b4444ac02e8/

我相信这是因为IIS系统中各种事物的啄食顺序,并且罪魁祸首需要运行项目的另一部分。我宁愿继续使用isapi_rewriter来漂亮的URL,所以我想知道这一点:

是否有任何方法可以在将其馈送到系统之前获取mod_rewrite删除eur.axd/[string]?

我的.htaccess文件当前如下显示:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# The following line excludes folders from rewriting
RewriteCond %{REQUEST_URI} !^/folder-name/

RewriteRule ^/(.*)$ /$1 [NC,L]

感谢您的所有帮助,总是非常感谢。


编辑:根据建议调整了我的HTACCESS,从我进行的简短测试中似乎可以很好地工作。已经在下面发布了它。

RewriteEngine on
RewriteBase /

# This is used to strip ASP.net eurl.axd bits
# from the URL so wordpress can use permalinks


# For the root
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule ^eurl\.axd/[0-9a-f]+/$ index.php [NC,L]


# For internal permalinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ index.php/$1 [NC,L]
有帮助吗?

解决方案

在您的重写列表顶部附近的类似物品应该有效:

RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1

其他提示

我将以下正则义务作为 第一的 统治 离子学ISAPI重写器 对于运行的网站 ASP.NET 4IIS 6 解决由 打破变化 用ASP.NET 4:引入

RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2

这让我再次使用无扩展的URL。

请注意,第二组如果存在,将捕获问题,并将其恢复为重写的URL。

是的,是 一个功能,而不是错误.

我遇到了v4.0 ASP.NET扩展的类似问题,II6上的URL功能较少,并通过ISAPI重写模块提供商找到了解决方案,不需要将其关闭。 Theissue和解决方案正如我们所经历的 http://www.vanadiumtech.com/ourblog/post/2011/08/12/cause-of-eurlaxd.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top