Я борюсь с этим в течение нескольких дней.Переписать sometext/to sometext/sometext.php, запретить прямой доступ к sometext.php
структура папок:
индекс/файлы/страницы/
В основной папке (индекс) существует index.php - это единственный файл index.php в целой странице. В папке с файлами есть php-файлы, которые на самом деле являются страницами веб-сайта. В папке с файлами есть еще несколько папок (страниц), на которых хранятся разные страницы. Я просто сгруппировал php-фиксы в папки, чтобы поддерживать порядок.
Я пытаюсь достичь этого.
- Когда я ввожу URL как индекса/файлы/страницы/somename.php - Я хочу, чтобы получить 404 или что-то
- Когда я ввожу URL как индекса/файлы/SomeName - это получает переписаны индекс/файлы/страницы/somename.php, но адрес выглядит чистым.
Теперь, что бы я ни делал, я не могу заставить оба правила работать, либо один перезаписывает другое, либо ничего не работает, я все время получаю 500.
Вот мое правило, что на самом деле работает:
RewriteRule ^([-0-9a-z]+)$ pages/$1.php
- это сценарий 2 и его ок.
Теперь, когда я добавляю правило, которое обрабатывает прямой доступ к php-файлам, предыдущее правило также затрагивается и перезаписывается, а все выдает 404, 500 и т. Д. Флаги, такие как [L] и т. Д., Не имеют никакого эффекта, изменяя порядок также ничего не делает.
Кроме того, я хочу, чтобы запретить прямой доступ к index.php и перенаправить в папку индекса (и показать чистый URL)
Здесь пока некоторые дополнительные правила я пытался, но никакого результата. Как я уже сказал, установочные флаги не дают никаких результатов.
RewriteCond %{REQUEST_URI} ^.*\/pages\/.*\.php$
RewriteRule ^(.+)$ [R=404,L]
RewriteRule ^([-0-9a-z]+)$ pages/$1.php
RewriteCond %{REQUEST_URI} ^(.+)\/index\.php
RewriteRule ^(.*)$ index/ [R=301,L]
RewriteCond %{REQUEST_URI} ^\/(.*)\.php
RewriteRule ^(.*)$ [R=404,L]
Thankx и рассматривает
не работает - index.php перенаправляется в папку индекса - TAHT нормально. Я все еще могу получить php страницы (index/fiels/pages/somename.php, но получить 404 при присоединении страницы через чистый URL-адрес, то есть: index/files/somename - не работает – Mac
Попробуйте обновить код сейчас. – anubhava
. он Вот конечный набор правил:.. (. *).. (. *). RewriteCond% {THE_REQUEST} */*/PHP [NC] RewriteRule^*/PHP $ [L, R = 404, NC, NE] RewriteRule^- (. +) ([0-9a-г] *) $ страниц/$ 1.php [L] RewriteCond% {REQUEST_URI} ^/index.php RewriteRule^(. *) $ mypage/[R = 301, L] thanx для ответов, это как-то привело меня к этому. – Mac