在 IIS7 上使用 Joomla 重写 URL

Posted

技术标签:

【中文标题】在 IIS7 上使用 Joomla 重写 URL【英文标题】:URL Rewrite with Joomla on IIS7 【发布时间】:2010-10-09 02:47:15 【问题描述】:

我在 IIS7 上运行 Joomla 1.5.9。我现在正在尝试使用 Joomla 全局配置页面中的 SEO 设置。

首先我玩弄了搜索引擎友好的 URL(摆脱了 URL 的查询部分);效果很好。

我还尝试启用“使用 Apache mod_rewrite”。我安装了“Microsoft URL Rewrite Module for IIS 7.0”并按照 http://learn.iis.net/page.aspx/527/joomla-on-iis 添加了 web.config。单击菜单链接时,这似乎起作用,因为我不再在 URL 中看到 index.php。地址栏更新为正确的 URL,但显示的内容始终是主页的内容。我在 IE 和 Google Chrome 中都尝试过,结果相同。加载后刷新页面没有区别。

我尝试重新启动 IIS7,但没有任何影响。

编辑:在我遵循以下建议之后(遵循http://www.mydotnetworld.com/post/2008/10/24/URL-Rewriting-In-Joomla-15-on-IIS-7.aspx 的说明:打开快速 cgi,修改 php.ini,并导入重写规则,而不是自己将它们放入 web.config),我现在得到了 404只是显示主页的内容。该 URL 似乎仍被正确重写。所以,不同的行为,但仍然不起作用。我不确定这是不是有用的信息,但是这两个字段显示在 404 页面中: 请求的 URL http://localhost:80/joomla_course/seasonal-specialties 物理路径 C:\inetpub\wwwroot\joomla_course\seasonal-specialties 物理路径是否应该是“未重写”的 URL?还是预期会是这样?

编辑 2:哦!我发现有人在 Joomla 论坛上发布了同样的问题:http://forum.joomla.org/viewtopic.php?f=543&t=364706&p=1598137#p1598137。不过那里也没有答案。

关于如何诊断(甚至更好,修复:))的任何想法?

谢谢!

【问题讨论】:

【参考方案1】:

我现在开始工作了。关键是确保使用 FastCGI 运行 php(根据 http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70),并确保启用了“使用 Apache mod_rewrite”。如果“使用 Apache mod_rewrite”已关闭,但 IIS7 中存在重写规则,则 html 会显示,但不会显示样式或图像。

使用 FastCGI 的要求很奇怪(并且与 http://maximumpcguides.com/windows-vista/how-to-create-a-windows-vista-iis7-mysql-php-web-server 中的建议相矛盾,这是我最初用来设置 php 的内容)。不使用 FastCGI 时似乎一切正常,除了 URL 重写。

似乎导入规则(如 http://www.mydotnetworld.com/post/2008/10/24/URL-Rewriting-In-Joomla-15-on-IIS-7.aspx 中的建议)或手动将它们添加到 web.config 文件(如 http://learn.iis.net/page.aspx/527/joomla-on-iis 中的建议)都可以。

【讨论】:

【参考方案2】:

web.config 中的规则似乎有问题。仅仅从对您链接的文章的评论开始,您并不是唯一一个遇到此问题的人。我会删除 web.config,然后按照here 列出的步骤进行操作。

【讨论】:

这看起来很有希望,但没有奏效。现在,当我单击链接时,我会得到 404。网址看起来仍然正确(就像他们最初所做的那样)。 404 表示物理路径与(重写的)URL 相似——这是预期的吗?

以上是关于在 IIS7 上使用 Joomla 重写 URL的主要内容,如果未能解决你的问题,请参考以下文章

Windows 2008 R2上配置IIS7或IIS7.5中的URLRewrite(URL重写)实例

在 IIS7 中将 URL 从 https:// 重写为 http://

使用IIS7 URL重写将请求转发到内部Web服务器的虚拟目录

迁移到新主机后,Joomla 站点 URL 重写不起作用

IIS7 301 URL 重写给出 200 状态而不是 301 状态

iis url重写模块 是干啥用的