скрыть расширения файлов с помощью mod_rewrite - PullRequest
0 голосов
/ 03 октября 2011

Как вы можете скрыть все расширения файлов, такие как .php, чтобы противостоять SEO

/page => /page.php

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$           %{REQUEST_FILENAME}.php [L]

Это не работает ...

редактировать

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !\.php$ [NC]
RewriteRule ^(.*)([^/]*)$       /$1$2.php [QSA,L]

1 Ответ

0 голосов
/ 03 октября 2011

Вы написали несколько странных ошибок в своем коде!

  • %{REQUEST_FILENAME} уже содержит расширение файла, поэтому вы запрашиваете файл, который заканчивается на .php.php, а с помощью флага -f вы проверяете, существует ли такой файл. Кроме того, фактически нет необходимости проверять, существует ли запрошенный файл для того, что вы хотите сделать.
  • Ваш RewriteRule перезапишет любой dot-php-файл по тому же URL-адресу плюс дополнительный .php. Так что index.php станет index.php.php
  • Зачем нужен восклицательный знак в самом начале вашего RewriteRule?

Исправляя эти ошибки, вы получаете что-то вроде:

RewriteRule (.*)\.php$ $1/

Вы можете использовать $1, $2, $... в правой части своего выражения для доступа к n-му совпадению в скобках () слева.

Для получения дополнительной информации о mod_rewrite см. здесь . Может быть, это помогает смотреть там время от времени. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...