htaccess rewriterule игнорировать index.html - PullRequest
0 голосов
/ 09 декабря 2011

Я использую CodeIgniter и .htaccess для перезаписи URL, но я хочу, чтобы он игнорировал index.html.

Это позволяет нам загружать index.html в любое время, так как это будет временная целевая страница.Со ссылкой на главный сайт на index.php.

Это то, что в настоящее время находится на .htaccess, и я установил индекс каталога сервера на index.html index.php

RewriteEngine on

RewriteCond $1 !^(index\.html|index\.php|js|img|fonts|data|css|uploaded|mobile_devices|audioplayer|emails|robots\.txt|archive_blog)

RewriteRule ^(.*)$ /index.php/$1 [L]

Спасибо за любую помощь

Ответы [ 3 ]

5 голосов
/ 09 декабря 2011

это выглядит так, как будто вы хотите переписать все, что на самом деле не существует в вашем каталоге.

попробуйте это вместо вашего текущего RewriteCond:

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
2 голосов
/ 09 декабря 2011

Вместо использования RewriteCond для игнорирования файла index.html, вы можете вместо этого ограничить доступ к нему напрямую с помощью директивы FilesMatch. FilesMatch принимает регулярное выражение, которое может фильтроваться на основе имени файла (например, index.html) или любого регулярного выражения.

Блокировка доступа к файлу index.html

<FilesMatch "index\.html$">
    Order allow,deny
</FilesMatch>

Это полностью запретило бы доступ к файлу index.html. Я признаю, что я не знаю, какое негативное влияние это может оказать на сканирование поисковых систем.

Подробнее о директиве FilesMatch см. http://httpd.apache.org/docs/current/mod/core.html#filesmatch


Что касается остальных каталогов в этом списке, который у вас есть в данный момент, вы можете просто заблокировать доступ ко всем каталогам независимо от имени. Это даст вам немного больше информации в будущем.

Options -Indexes

Подробнее о Директиве опций см. http://httpd.apache.org/docs/current/mod/core.html#options


В конце ваш новый файл .htaccess будет выглядеть примерно так:

# Protect specific files from access
<FilesMatch "index\.html$">
    Order allow,deny
</FilesMatch>

# Hide directory listing for URL's mapping to a directory
Options -Indexes

# Follow all symbolic links in this directory 
Options +FollowSymLinks

# General rewrite rules
<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
0 голосов
/ 09 декабря 2011

Почему бы вам не использовать встроенную функцию окружения ?

Вы можете создать среду 'обслуживания' и настроить базовый контроллер на то, что вам нужно.Тогда вам просто нужно отредактировать файл index.php, чтобы указать нужную среду.

...