繁体   English   中英

在IIS6上使用ISAPI_rewriter的mod_rewrite问题

[英]mod_rewrite issues using ISAPI_rewriter on IIS6

我希望非IIS的人可以在此方面为我提供帮助,尽管我遇到的问题是基于运行ISAPI_Rewriter的IIS6服务器。

情况是我在IIS6上运行Wordpress,ISAPI_Rewriter被用作mod_rewrite的替代品,并且运行正常。 我的问题是,当我获取它重写Wordpress的URL(因此不需要其中的index.php文件名)时,它显示404。经过大量搜索后,我发现问题是因为ASP.net(或类似内容)将eurl.axd / [random string]添加到URL的末尾,因此将其馈送到Wordpress请求中并将其中断。 我将Wordpress模板设置为输出请求的URL,它看起来像这样:

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

我相信这是由于IIS系统中各种事物的排列顺序而导致的,这是运行项目另一部分的罪魁祸首。 我希望继续使用ISAPI_Rewriter来整理网址,所以我想知道这一点:

有什么方法可以让mod_rewrite在将eurl.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

我将以下正则表达式作为Ionics Isapi Rewriter的 首要规则,用于IIS 6ASP.NET 4上运行的网站,以解决由ASP.NET 4引入的重大更改引起的问题:

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

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

请注意,第二组将捕获查询字符串(如果存在)并将其恢复为重写的url。

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

我在II6上遇到了v4.0 ASP.Net扩展较少URL功能的类似问题,并通过ISAPI重写模块提供程序找到了解决方案,不需要将其关闭。 此处记录了我们所经历的问题和解决方案, 网址为http://www.vanadiumtech.com/OurBlog/post/2011/08/12/Cause-of-eurlaxd.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM