2014-10-15 2 views
0

У меня есть example.com домен и набор на cloudflare. Но некоторое время мне не нужно использовать cloudflare, поэтому я создаю субдомен up.example.com и не использовал для него облачную флешку. затем я припарковываю его в основном домене. Это означает, что example.com и up.example.com указывают на корневой сайт. Теперь для обложки дублирующегося содержимого в SEO, мне нужен файл .htaccess.поддомен подстановочных знаков .htaccess для побега cloudflare

Эти пункты для меня важно:

  • Все URL под основной домен (example.com) должны быть открыты и доступны.
  • Главная страница не открывается с помощью субдомена (up.example.com) и просто открывается с основным доменом (example.com).
  • Весь адрес с upload Контроллер должен быть доступен из субдомена. например: up.example.com/upload/
  • Слово после контроллера (мое действие) просто содержит az, 0-9 (потому что не разрешает использовать точку для указания на файл)
  • О других URL-адресах путь должен быть недоступен из поддомена и должен получить ошибку 404.

Для этого, я пишу код здесь:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^up\..+ [NC] 
RewriteCond %{REQUEST_URI} !^(/upload/?[a-z,A-Z,0-9]*)$ [NC] 
RewriteRule . - [R=404,L,NS] 

# Hide index.php , this used for YII PHP Framework 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L,QSA] 

Но в этом коде моя проблема:

  • up.example.com => открыть его! но не должны открывать его.
  • up.example.com/upload/test => получить меня Not Found. The requested URL /index.php was not found on this server., но должен открыть его.

Примечание: о другой URL-адрес, которые я получаю правильную ошибку 404, например, для up.example.com/upload/test.jpg я получаю Not Found. The requested URL /upload/test.jpg was not found on this server. сообщений об ошибке, в этом сообщении об ошибке указало именно /upload/test.jpg но о up.example.com/upload/test по ошибке сообщение указано на index.php файл!

Пожалуйста, помогите мне с исправлением .htaccess.

+0

Причина, почему этот вопрос остается без ответа, что есть слишком много требований дубинки в одном вопросе. Попробуйте упростить его. – anubhava

ответ

0

Я решаю эту проблему с помощью команды this link.
Просто необходимо использовать !^index\.php$ вместо .

коррекции Код:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^up\. [NC] 
RewriteCond %{THE_REQUEST} \s/+index\.php[?\s] [NC] 
RewriteRule ^index\.php$ - [R=404,L,NC] 

RewriteCond %{HTTP_HOST} ^up\. [NC] 
RewriteCond %{REQUEST_URI} !^(/upload/?[a-z,A-Z,0-9]*)$ [NC] 
RewriteRule !^index\.php$ - [R=404,L,NC] 

# Hide index.php , this used for YII PHP Framework 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L,QSA] 
Смежные вопросы