2014-10-18 76 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