.htaccess: добавление косой черты

0

Весь мой файл.htaccess состоит из следующего кода:

Options +FollowSymLinks -MultiViews
rewriteEngine on
RewriteBase /

## Hide .php extension by external redirection:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,NC]

## Internally redirect to .php extension:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php

## Redirect to index when page is missing.
ErrorDocument 404 http://www.domain.com

Он (наконец!) Удаляет расширение *.php в конце. Нет претензий. Но я изо всех сил пытался вставить дополнительный код, чтобы добавить конечную косую черту (/). Ничто не работает. Иногда CSS отключается и добавляет косую черту после того, как% 1 приводит к ошибкам.

Кроме того, я читал всевозможные истории в Интернете, что использование Multiviews и trailing slashes позволяет создавать повторяющиеся URL-адреса и другие проблемы с поисковой системой. Может быть, лучше оставить это как есть?

Может ли кто-нибудь дать мне некоторое представление о коде для использования здесь?

Теги:
.htaccess
mod-rewrite

2 ответа

0

Требуется конечная косая черта в %1. Сломанный CSS, вероятно, потому, что вы используете относительный URL-адрес в своем контенте, а конечная слэш меняет базу URI. Чтобы исправить это, вам нужно либо сделать все ваши ссылки абсолютными URL-адресами, либо добавить базу в заголовок страницы:

<base href="/" />

Затем вам нужно будет изменить внутреннюю переписку, которая обрабатывает добавление php обратно, так что примерно так:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

## Hide .php extension by external redirection:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php [NC]
RewriteRule ^ /%1/ [R,NC,L]

## Internally redirect to .php extension:
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

## Redirect to index when page is missing.
ErrorDocument 404 http://www.domain.com
0

Кажется, что много кода для удаления.php для меня достаточно, используя

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

Что касается части Slash, это зависит от вашей настройки.

но если вы должны основывать свой сайт на index.php

например:

$key = $_GET["key"];

if($key = "about"){
  include("about.php");
}
else if($key = "contact"){
  include("contact.php");
}
else{
  include("index.php");
}

и используйте следующий код в.htacces

#RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?key=$1
#RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1

Работает на меня! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню