2016-09-08 2 views
2

У меня уже есть скрипты php, и недавно я хотел интегрировать Slim framework.htaccess использовать «this.php», если вышеуказанные условия не выполняются

Что я надеюсь достичь, это использование тонкой маршрутизации в качестве конечного объекта, если все мои уже существующие условия перезаписи не выполняются, это означает, что 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, что приведет к ошибкам 404 Slim. Как я могу сделать 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

'QSA' необходимо, только если вы изменяете строку запроса в целевом URI, и здесь, в этом правиле, мы этого не делаем. – anubhava

+1

большое спасибо –

Смежные вопросы