【发布时间】:2020-06-05 22:36:12
【问题描述】:
首先解释我要做什么:
我的网站上有不同的页面。有些页面具有相同的模板,因此我创建了一个带有参数的页面以适应我的页面: 参数称为 pageview 和 lang URL 如下所示:
http://mywebsite/home/en http://mywebsite/index.php?pageview=home&lang=en
http://mywebsite/page2/fr http://mywebsite/index.php?pageview=page2&lang=fr
例如。为了实现这一点,我使用了著名的 .htaccess 文件,它是 Apache 的模块 rewrite_module。
我还有一个带有不同模板的联系页面。它的 URL 看起来像这样,这里只有一个参数:
http://mywebsite/contact/fr http://mywebsite/contact.php?lang=fr
http://mywebsite/contact/en http://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 位于根文件夹中
【问题讨论】:
-
你试过加
[QSA]吗? -
是的,但没有任何改变;(
-
尝试
[L]停止规则处理。您可能还希望使其不区分大小写并确保您在文档根目录下使用 contact.php,例如:RewriteRule ^contact/([a-zA-Z0-9]+)/?$ /contact.php?lang=$1 [NC,L] -
还是有问题,不过还是谢谢
-
我的 PHP 代码似乎可以正常工作,因为当我输入 (mywebsite/contact.php?lang=fr) 时它可以正常工作
标签: regex .htaccess web mod-rewrite