应用程序使用 urlhttp://www.mydomain.com/item/3193.html
从 mysql 数据库中选择并显示适当的记录。
只需提一下,应用程序是用 php 编写的,托管在 apache 网络服务器上。
事实上应该是http://www.mydomain.com/item.html/3193.html
,但在 .htaccess 中我有 RewriteRule 可以帮助我将其视为http://www.mydomain.com/item/3193.html
但是在新的服务器上,RewriteRule 由于某种原因不起作用。正如我所说,它在 .htaccess 中定义如下:
RewriteEngine On
RewriteBase /
#some conditions here
RewriteRule ^item/(.*) item.html/$1
#more conditions here
因此,它在旧服务器上运行。它(看起来?)在新服务器上不起作用......
因此,首先,我将与托管服务提供商核实服务器是否允许重写规则。
此外,如果是的话(我猜是的),我可以更改此 RewriteRule 的语法以获得我需要的能力吗?
提前非常感谢!
答案1
更有可能的是,您没有权限设置 .htaccess 文件。尝试使用以下方法执行一些基本操作,例如目录列表(没有 index{htm,html,php} 或您可能拥有的任何默认页面)Options Indexes
如果您无法查看目录内容,AllowOverride
则设置为 None(或限制性设置),这就是您的问题。它必须至少设置为,AllowOverride FileInfo
并且Options FollowSymLinks
也是必需的。如果您确实需要它,请与您的提供商联系 (*)。
如果您可以查看目录列表,则说明您没有所需的选项,请再次与您的提供商联系。
(*) 在临时或开发服务器中,RewriteRules 可以放在 .htaccess 中,这样您就可以快速完成工作,而无需多次重新启动 apache。如果可以,请确保在生产时将它们移至虚拟主机配置。