URL重写的正则表达式
我发现了一个类似于我的问题的问题(Regular Expression For URL Query),但无法让我的问题得到解决。URL重写的正则表达式
所以我在HTACCESS中正则表达式遇到问题。
因此,我在我的网站是:
ROOT:(我的Web根是在子文件夹中的网站')
/sites/index.php和其他文件
/网站/网站/ sample_folder_name/
现在我想的事是重写URL:
/网站/网站/ sample_folder_name/file_name.php
到:
/网站/ file_name.php siteredirect = sample_folder_name
记住: 如果URL中包含任何请求参数,那么这些参数也必须重新编写,即:
示例:
?/位点/位点/ sample_folder_name/file_name.php CAT_ID = 1 &用户= 2
到:
/位点/ file_name.php CAT_ID = 1 &用户= 2 & siteredirect = sample_folder_name
参数应该是未知的,而不是user和cat_id。它可以是任何参数。意味着无论在.php之后写入的内容都应该在URL中。
方式:?
/网站/网站/ sample_folder_name/file_name.php if_any_parameters
则:
/网站/ file_name.php if_any_parameters & siteredirect = sample_folder_name
否则:
/网站/ file_name.php?siteredirect = sample_folder_name
目前,重写是伟大的工作,但我不能让他们带参数运行。
我有什么在我的.htaccess现在:
RewriteRule ^sites\/([0-9A-Za-z_]+)\/([0-9A-Za-z_]+)\.php(.*)$ $2.php(?(?=$3)$3&)siteredirect=$1 [L]
RewriteRule ^sites\/([0-9A-Za-z_]+)\/$ index.php?siteredirect=$1 [L]
在此之后,它给我一个404
请帮助...我在哪里做错了!
您需要QSA
标志(查询字符串追加):
RewriteRule ^sites(/sites/[^/]+)/([^/]+)$ $1?siteredirect=$2 [QSA]
更重要的是,反转您的规则:你将不必使用L
而且,考虑使用<Location>
指令,它会让你的工作更轻松:
<Location "/site/site">
#rules here
</Location>
<LocationMatch "^/site/(?!site/)">
#rules here
</Location>