Можно ли проверить, существует ли страница в папке, используя .htaccess?

  • Автор темы Dianafem
  • Обновлено
  • 12, May 2024
  • #1
В настоящее время я не использую CMS для своего сайта.

Я просто создаю страницы в формате .php и помещаю их на свой сервер. Предположим, что я поместил свои обучающие статьи в папку /tutorial, а новостные статьи — в папку /news.

Исходные URL-адреса этих статей будут выглядеть так:

 
[URL='https://lumtu.com/yti/Zw22wZS9odHRwOi8vbXlzaXRlLmNvbS90aGUtdGl0bGUtb2YtYS10dXRvcmlhbC1hcnRpYRnc']http://www.mysite.com/the-title-of-a-tutorial-article/[/URL]
[URL='https://lumtu.com/yti/ZAbbAZS9odHRwOi8vbXlzaXRlLmNvbS90aGUtdGl0bGUtb2YtYS1uZXdzLWFydGljGdy']http://www.mysite.com/the-title-of-a-news-article/[/URL]


Код (разметка): используя переписывание URL-адресов, я сделал URL-адреса более красивыми, удалив расширение файла и добавив косую черту в конце:

  [URL='https://lumtu.com/yti/Zw22wZS9odHRwOi8vbXlzaXRlLmNvbS90dXRvcmlhbC90aGUtdGl0bGUtb2YtYS10dXRvcmlhbC1hcnRpYRnc']http://www.mysite.com/tutorial/the-title-of-a-tutorial-article/[/URL] [URL='https://lumtu.com/yti/ZsNNsZS9odHRwOi8vbXlzaXRlLmNvbS9uZXdzL3RoZS10aXRsZS1vZi1hLW5ld3MtYXJ0aW0JX']http://www.mysite.com/news/the-title-of-a-news-article/[/URL]


Код (разметка): Вот вопрос.

Что, если я захочу сделать URL-адреса еще красивее, удалив имена папок? Вот как я хочу, чтобы они выглядели:
  [URL='https://lumtu.com/yti/aAnnAaHBodHRwOi8vbXlzaXRlLmNvbS90dXRvcmlhbC90aGUtdGl0bGUtb2YtYS10dXRvcmlhbC1hcnRpY2xlLx2Y']http://www.mysite.com/tutorial/the-title-of-a-tutorial-article.php[/URL] [URL='https://lumtu.com/yti/aw55waHBodHRwOi8vbXlzaXRlLmNvbS9uZXdzL3RoZS10aXRsZS1vZi1hLW5ld3MtYXJ0aWNsZSsNW']http://www.mysite.com/news/the-title-of-a-news-article.php[/URL]
Код (разметка): Можно ли это сделать в .htaccess?

Обратите внимание, что у меня также есть некоторые базовые страницы, такие как страница «О нас» и страницы «Контакты» в корневой папке, которые имеют один и тот же формат URL-адресов (http://www.mysite.com/about-us/

, http://www.mysite.com/contact-us/

, и т. д). И у меня также есть папки, такие как /css и /js, для хранения моих файлов css и js. Если это можно сделать в .htaccess, я предполагаю, что подход заключается в проверке наличия запрошенной страницы в /tutorial, /news или корневой папке.

Найдя его, отобразите его; в противном случае перенаправить на страницу 404. Но у меня нет идеала относительно того, как следует писать код.

Поэтому некоторые советы будут высоко оценены.

И я надеюсь, что такой подход не приведет к заметному замедлению времени ответа сервера.

Dianafem


Рег
03 Oct, 2012

Тем
61

Постов
187

Баллов
492
  • 21, May 2024
  • #2
Чтобы удалить каталог из URL-адреса, вы можете использовать следующее правило htaccess:
 RewriteEngine On
RewriteRule ^folder_to_remove/(.*)$ /$1 [L,R=301]
Код (разметка):
 

Ксения4


Рег
07 Feb, 2013

Тем
80

Постов
192

Баллов
622
  • 31, May 2024
  • #3
@RoseHosting, Спасибо. Прежде чем добавить новое правило перезаписи, я проверил ссылку на http://www.mysite.com/folder_to_remove/test.php

и http://www.mysite.com/folder_to_remove/test/

, и страница отобразилась правильно. Но после того, как я добавил это новое правило перезаписи, все два вышеуказанных URL-адреса перенаправляются на http://www.mysite.com/test.php

с появлением страницы 404. Вот мой .htaccess:
 RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/$ $1.php [L]

RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php [L]

RewriteRule ^folder_to_remove/(.*)$ /$1 [L,R=301]
HTML: Не знаю, где я делаю неправильно.
 

Evgeny_e84


Рег
01 Jan, 2011

Тем
79

Постов
196

Баллов
591
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно