我希望非IIS人可以帮助我,虽然我遇到的问题是基于运行ISAPI_Rewriter的IIS6服务器。
情况是我在IIS6上运行Wordpress,ISAPI_Rewriter被用来替代mod_rewrite并且运行正常。我的问题是,当我让它重写我的Wordpress的URL(所以我不需要index.php文件名)它显示404.经过多次搜索我发现问题是因为ASP.net的一部分(或类似的东西)将eurl.axd / [随机字符串]添加到URL的末尾,因此这被送入Wordpress请求并打破它。我设置Wordpress模板输出请求的URL,它看起来像这样:
http://www.example.com/index.php/about/eurl.axd/b552863f2d5e9841b5d8b79b44ac02e8/
我认为这是因为IIS系统中各种事物的啄食顺序,并且需要罪魁祸首来运行项目的另一部分。我宁愿继续使用ISAPI_Rewriter来提升URL,所以我想知道这个:
有没有办法让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]
感谢所有的帮助,我们非常感激。
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]
答案 0 :(得分:1)
在你的重写列表顶部附近的这样的东西应该有效:
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1
答案 1 :(得分:0)
我在 IIS上的 ASP.NET 4 上运行的网站上使用以下正则表达式作为第一个规则与 Ionics Isapi重写器 6 解决由ASP.NET 4引入的breaking change引起的问题:
RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2
这让我再次使用无扩展名网址。
请注意,第二个组会捕获查询字符串(如果存在)并将其恢复到重写的网址。
是的,它是a feature, not a bug。
答案 2 :(得分:0)
我在II6上遇到了与v4.0 ASP.Net扩展较少URL功能的类似问题,并通过ISAPI重写模块提供商找到了解决方案,不需要将其关闭。我们经历过的问题和解决方案在此处记录http://www.vanadiumtech.com/OurBlog/post/2011/08/12/Cause-of-eurlaxd.aspx