2013-06-08 4 views
1

Я пытаюсь перенаправить все запросы к скрипту, если запрошенный файл или каталог не существует, но мне нужно улучшить этот .htaccess, чтобы проверить, существует ли файл на родительскую папку.
я в настоящее время:RewriteCond проверка наличия файла в родительском каталоге

RewriteEngine on 

# check if requested file or directory exists 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# map requests to contentpage.php and appends it as a query string 
RewriteRule ^(.*)/(.*)$ contentpage.php?url=$2&lang=$1 

сейчас, это .htaccess успешно перенаправляет
ан/products.php ->contentpage.php URL = products.php & LANG = ENтолько если ? products.php не существует в дочернем каталоге/en/(и фактически каталог/en/физически не существует, поэтому RewriteCond не может фильтровать, когда у меня есть файл products.php в родительском каталоге) ,

Мне нужно проверить, существует ли файл в верхней папке, где находятся мои файлы. Он должен перенаправить только языковые каталоги, например/en/es/de/pt .etc

У кого-нибудь есть идея, как это решить? thanks

ответ

1

Вы можете поместить свои правила в файл htaccess в своем верхнем каталоге; таким образом, если у вас есть

/parentdir 
    /en 
    /es 
    /de 

, даже если доступ к родительскому пути или дочерним пути:

  • /parentdir/products.php
  • /parentdir/en/products.php

в /parentdir/.htaccess правила оцениваются
Таким образом, вы можете использовать набор правил, как это:

# check if requested file does not exists in the child dir 
# check if requested file does not exists in the child dir 
# if does not exists... check if it also does not exists in the parent dir 
RewriteCond /parentdir/$1/$2 !-f 
RewriteCond /parentdir/$2 !-f 
RewriteRule ^/parentdir/(es|en|fr|de)/(.*)$ contentpage.php?url=$2&lang=$1 

# check if requested file does not exists in the parent dir 
RewriteCond /parentdir/$1 !-f 
RewriteRule ^/parentdir/(.*)$ contentpage.php?url=$2&lang=$1 
Смежные вопросы