rwi*_*red 1 php mod-rewrite seo .htaccess apache-2.2
我正在为客户管理一个电子商务网站,该网站是使用 Apache 上的 JShop 构建的。出于 SEO 的原因,链接类似于:
http://www.domain.com/shop/section/3151/1/flowers
http://www.domain.com/shop/product/35465/blueflower
Run Code Online (Sandbox Code Playgroud)
映射到:
http://www.domain.com/shop/section.php/3151/1/flowers
http://www.domain.com/shop/product.php/35465/blueflower
Run Code Online (Sandbox Code Playgroud)
提供与以下相同的页面:
http://www.domain.com/shop/section.php?xSec=3151&xPage=1
http://www.domain.com/shop/product.php?xSec=35465
Run Code Online (Sandbox Code Playgroud)
不知何故,这是在没有mod_rewrite 的情况下实现的(我已经通过禁用 mod_rewrite 并注释掉所有 conf 和 .htaccess 文件中的所有重写规则来确认这一点)。
注意:文件 section.php 和 product.php 存在,但 section 和 product 不存在,也没有符号链接。
问题是在生产服务器上这种行为停止发生。在我的开发服务器上它仍然有效。我能够通过使用 mod_rewrite 使生产服务器再次正常工作,因为这是我知道如何做到这一点的唯一方法。但是,我真的需要首先知道生产服务器上发生了什么变化,以便我可以正确理解问题(以避免其他不可预见的后果)。我已经重新启动了 Apache 并撤消了在 URL 损坏时我在生产服务器上所做的所有更改。它们仍然被破坏(没有我的新重写规则)。
除了mod_rewrite之外,还有哪些方法可用于从 URL 中删除 .php 扩展名?
内容协商可以做到这一点。MultiViews为shop文件夹启用:
<Directory "/path/to/shop">
Options FollowSymLinks +MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
当服务器收到请求/shop/section/3151/1/flowers(section不存在)时,它会section.*在shop文件夹中查找,根据浏览器发送的媒体类型和内容编码进行排序并选择最佳匹配。
| 归档时间: |
|
| 查看次数: |
3230 次 |
| 最近记录: |