2014-10-18 77 views
2

我已经搜索了一段时间,无法找到解决方案,我的问题,也许我只是没有寻找正确的事情,但无论如何,这是发生了什么事。.htaccess重写问题没有斜杠

我在我的.htaccess文件中有以下mod_rewrites。重写可以很好地工作,但如果我没有结尾的斜杠,那么它会在URL中自动显示一个变量。请看下面的例子以获得清晰的理解。

URL样本

如果我进入http://website.com/test/,(注意尾随斜线)页面的URL将保持完全相同的,完美加载内容!

但是,如果我忘记了斜线,即:http://website.com/test,那么页面URL将更改为http://website.com/test/?var1=test。 (现在注意到我已经忽略了斜线),内容仍然正确加载,并且一切正常,只是我的URL现在是“丑陋的”。

我希望我明确这一点,但如果您有任何问题,请随时询问。谢谢!

的.htaccess代码

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] 
+0

它看起来像问题是不相关的部分'.htaccess'你显示。这些规则都没有简单的'?var1 ='重定向,只有前面有'_client.php',它不在最终的URL中。在服务器配置中检查网站根目录或规则的'.htaccess'中的规则。 – Cheery 2014-10-18 04:38:05

+0

我不认为我很理解。这个.htaccess在我的根目录中,下面是我用来获取变量的PHP。 '<?php $ clientURL = str_replace(“/”,“”,$ _REQUEST [“var1”]); $ seriesSet = str_replace(“/”,“”,$ _REQUEST [“var2”]); $ sermonSet = str_replace(“/”,“”,$ _REQUEST [“var3”]); $ serviceSet = str_replace(“/”,“”,$ _REQUEST [“var4”]); ?>' – 2014-10-18 04:48:59

+0

你在'_client.php'中做了什么?它可以做这个重定向吗?我只是写了非规则重定向到'?var1 = ...',只有'_client.php'和'_client.php'不在URL中。正如我想的那样,发生了一些事情,但在上市规则中。 – Cheery 2014-10-18 04:51:58

回答

2

这是发生由于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] 
+0

工作完美!非常感谢!我非常感谢! – 2014-10-18 07:35:02

+0

不客气,很高兴它解决了。 – anubhava 2014-10-18 07:40:26