Как предотвратить открытие URL-адресов /index.php или /index.html?

DirectoryIndex index.html index.php

# -- INIT
RewriteEngine on
RewriteBase /

# -- PRODUCTION
# RewriteCond %{HTTP_HOST} ^www.assist\.loc$ [NC]
# RewriteRule ^(.*)$ http://assist.loc/$1 [R=301,L]

# -- SEO index.html // index.php ??????????? DONT KNOW ????????
RewriteCond %{THE_REQUEST} ^.*/index\.(php|html)
RewriteRule .* / [R=301,L]

# -- HACKING
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* /index.php [F]

# -- DIRECTORIES
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  /$1 [R=301,L]

# -- FILES
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]

Здравствуйте, может что-нибудь помочь мне с написанием моего файла .htaccess? Я хочу добавить директиву # - SEO для 301 перенаправления из файла index.php или index.html в "/".

", но теперь у меня есть перенаправление со ВСЕХ маршрутов на "/" или циклическое перенаправление при перенаправлении из индекса. php или index.html.

Необходимо исправить # - часть SEO.

0
задан 26 November 2015 в 22:23
1 ответ

Если вы хотите перенаправить любой index. {Something} на корневой путь:

# -- DEFAULT DOCUMENT
DirectoryIndex index.html index.php

# -- INIT
RewriteEngine on

# -- REDIRECT ANY INDEX PAGE TO ROOT
RewriteCond %{Request_URI} /index\.
RewriteRule .* / [R=301]

# -- HACKING
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* /index.php [F]

# -- DIRECTORIES
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  /$1 [R=301,L]

# -- REDIRECT REQUEST FOLDER TO /INDEX
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule .* /index.php [L]

например:

  • www.test.com/index.php => будет показать www.test.com/
  • www.test.com/test/index.php => покажет www.test.com/
  • www.test.com/any/folder/index.htm => покажет www.test.com/

Это перенаправит любой index. {Something} в его папку (если папка существует)

# -- REDIRECT ANY INDEX PAGE TO REQUEST FOLDER
RewriteCond %{Request_URI} /index\.
RewriteRule (.*)/index\. $1 [R=301]

и

# -- REDIRECT REQUEST FOLDER TO IT INDEX
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule (.*)/index\. %{DOCUMENT_ROOT}$1/index.php [L]

, например:

  • www.test. com / index.php => покажет www.test.com/
  • www.test.com/test/index.php => покажет www.test.com/test/
  • www.test.com/any/folder/index.htm => покажет www.test.com/any/folder/
0
ответ дан 5 December 2019 в 11:33

Теги

Похожие вопросы