Весь мой файл.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-адреса и другие проблемы с поисковой системой. Может быть, лучше оставить это как есть?
Может ли кто-нибудь дать мне некоторое представление о коде для использования здесь?
Требуется конечная косая черта в %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
Кажется, что много кода для удаления.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
Работает на меня! :)