2016-09-08 36 views
2

我有一個已經存在的PHP腳本,最近我想集成Slim框架。htaccess使用「this.php」如果不符合上述條件

我希望獲得的是使用Slim路由作爲最後的手段,如果我現有的所有重寫條件都不符合,這意味着Slim也會處理404頁。

修身框架的.htaccess重寫規則是:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule^index.php [QSA,L]

,但因爲我已經有現有index.php我使用this.php代替實例苗條,所以它應該是

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule^this.php [QSA,L]

這裏來這個問題,我已經有了我想保留的預先存在的重寫規則,這裏有一些重寫規則:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

# Rewrite to www 
RewriteCond %{HTTP_HOST} ^example.com [nc] 
RewriteRule ^(.*)$ https://www.example.com/$1 [r=301,nc,l] 

RewriteRule  ^category/([^/]*)/?$ category.php?console=$1 [L,QSA] 
RewriteRule  ^category/([^/]*)/([^/]*)$ category.php?console=$1&page=$2 [L,QSA] 
RewriteRule  ^category-amp/([^/]*)/([^/]*)$ category-amp.php?console=$1&page=$2 [L,QSA] 
RewriteRule  ^games/([^/]*)/?$ games.php?console=$1 [L,QSA] 
RewriteRule  ^forum^(.*)$ index.php 
RewriteRule  ^download.php?$ $1/new-page$2 [R=301,L] 

因此,如果上述任何模式不符合,我希望他們改用this.php

如果我添加

RewriteRule^this.php [QSA,L]

到規則的底部。問題是,使用它時,上面的每條規則都被忽略,導致所有查詢重定向到this.php,這會引發Slim的404錯誤。我如何使htaccess先檢查規則是否設置爲RewriteRule^this.php [QSA,L]以上,然後纔將其最終傳遞給this.php

希望有人能幫助。

回答

1

有它這樣通過保持苗條的規則在底部:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

# Rewrite to www 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L] 

RewriteRule ^download\.php$ /new-page [R=301,L] 

RewriteRule ^category/([^/]*)/?$ category.php?console=$1 [L,QSA] 
RewriteRule ^category/([^/]*)/([^/]*)$ category.php?console=$1&page=$2 [L,QSA] 
RewriteRule ^category-amp/([^/]*)/([^/]*)$ category-amp.php?console=$1&page=$2 [L,QSA] 
RewriteRule ^games/([^/]*)/?$ games.php?console=$1 [L,QSA] 
RewriteRule ^forum index.php [L] 

# slim rule 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^this.php [L] 
+0

能否請您解釋一下爲什麼它'[L]'而不是原來的'[QSA,L]'? –

+1

只有在修改目標URI中的查詢字符串時才需要'QSA',並且在此規則中我們沒有這樣做。 – anubhava

+1

非常感謝 –