首先说明我要做什么:我的网站上有不同的页面。某些页面具有相同的模板,因此我创建了一个带有参数的页面以适应我的页面:参数称为pageview和lang,URL如下所示:http://mywebsite/home/enhttp://mywebsite/index.php?pageview=home&lang=enhttp://mywebsite/page2/frhttp://mywebsite/index.php?pageview=page2&lang=fr例如。为了解决这个问题,我使用了著名的.htaccess文件,它为Apache提供了rewrite_module模块。我还有一个带有其他模板的联系页面。 URL看起来像这样,这里只有一个参数:http://mywebsite/contact/frhttp://mywebsite/contact.php?lang=frhttp://mywebsite/contact/enhttp://mywebsite/contact.php?lang=en
这是我的.htaccess代码:
RewriteEngine On
RewriteRule ^contact/([a-zA-Z0-9]+)/?$ contact.php?lang=$1
RewriteRule ^([a-zA-Z0-9]+)$ index.php?pageview=$1 [QSA]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?pageview=$1&lang=$2 [QSA]
问题是.htaccess
文件可用于index.php,但不适用于contact.php
我可以完全访问contact.php
,但未检测到参数
感谢您的帮助😀😀!
编辑
如果删除索引部分以仅保留联系人rewriteRule的问题,则保留在那里。contact.php
和index.php
在根文件夹中
RewriteRule ^contact/([a-zA-Z0-9]+)/?$ contact.php?lang=$1
似乎您可能与MultiViews发生冲突。如果启用了MultiViews,则mod_negotiation将/contact/fr
的请求重写为/contact.php
(不带任何参数)之前 mod_rewrite能够处理该请求。
尝试在.htaccess
文件顶部禁用MultiViews:
Options -MultiViews