我已经搜索了一段时间,但找不到解决问题的方法,也许我不是在寻找正确的东西,但是无论如何,这就是正在发生的事情。
我的.htaccess文件中包含以下mod_rewrites。重写工作完美,但是如果我没有结尾的斜杠,那么它会在url中自动显示一个变量。请参阅下面的示例以清楚了解。
如果输入http://website.com/test/
,(请注意后跟斜杠),页面URL将保持不变,并完美加载内容!
但是,如果我忘记了斜杠,即:http://website.com/test
,则页面URL将更改为http://website.com/test/?var1=test
。(现在请注意,我已经没有在后面加上斜杠了)内容仍然可以正确加载,并且一切运行正常,只是我的URL现在很“丑陋”。
希望我已阐明这一点,但是如果您有任何疑问,请随时提出。谢谢!
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2&var3=$3&var4=$4 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2 [L]
RewriteRule ^([\w-]+)/?$ _client.php?var1=$1 [L]
之所以发生这种情况,是因为mod_dir
在您的mod_rewrite
规则完成后,模块会添加一个斜杠。使用如下规则来避免出现此问题:
DirectorySlash Off
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
# add a trailing slash to directories
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2&var3=$3 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/?$ _client.php?var1=$1&var2=$2 [L,QSA]
RewriteRule ^([\w-]+)/?$ _client.php?var1=$1 [L,QSA]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句