htaccess的多个页面不起作用

问题描述 投票:0回答:1

首先说明我要做什么:我的网站上有不同的页面。某些页面具有相同的模板,因此我创建了一个带有参数的页面以适应我的页面:参数称为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.phpindex.php在根文件夹中

regex .htaccess web mod-rewrite
1个回答
0
投票
RewriteRule ^contact/([a-zA-Z0-9]+)/?$ contact.php?lang=$1

似乎您可能与MultiViews发生冲突。如果启用了MultiViews,则mod_negotiation将/contact/fr的请求重写为/contact.php(不带任何参数)之前 mod_rewrite能够处理该请求。

尝试在.htaccess文件顶部禁用MultiViews:

Options -MultiViews
© www.soinside.com 2019 - 2024. All rights reserved.