Как перенаправить URL с помощью .htaccess-файла?

Мой сайт имеет путь к библиотеке / каталогу, например:

{Корень} / страницы / {файлы} .php

Мой путь index.php следующий: {root} /index.php

Я хочу, чтобы, когда люди переходили (в качестве примера) к «login.php» (который существует в каталоге / pages.), URL-адрес не содержит «/ pages».

Так:

www.website.com/pages/dashboard.php

Перенаправляет на

wwww.website.com/dashboard.php

И возможно, что когда люди заходят на сайт www.website.com/dashboard.php, они могут получить доступ к этой странице.

Извините за плохое объяснение, не могу найти хорошие слова для этого.

Редактировать: это мой .htacces сейчас

RewriteEngine on

# Rewrite automatic to /index.
RewriteCond %{REQUEST_URI} ^/$

# Second check for if above doesn't do the job [www/https].
RewriteCond %{REQUEST_URI} !^/index [NC]
RewriteRule ^$ /index [R=301,L]

# Delete all the .php and .html extensions from files [url-related].
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

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

# Prevent people for looking inside the .htacces file.
<Files .htaccess>
order allow,deny
deny from all
</Files>

И я попробовал это:
RewriteRule ^ /? Pages /(.*)$ / $ 1 [R = 301, L]

(Который меня перенаправил, но все равно получил ошибку 404.

0

Решение

Я сомневаюсь, что вы можете сделать это только с .htaccess. (РЕДАКТИРОВАТЬ: вы можете, см. «РЕДАКТИРОВАТЬ» ниже)

То, что вы хотите, это ПРИНЯТЬ, что login.php были в корневом каталоге, но на самом деле это не так.

РЕДАКТИРОВАТЬ: Я думаю, что я перепутал это. Вы можете сделать это только с .htaccess-файлом. Но я не рекомендую это. Вам придется добавить все перенаправления на руку (или разработать выражения для разных случаев).
Вместо этого я предлагаю использовать следующую технику. Это в основном начало самодельной системы управления контентом, где пользователь может самостоятельно создавать страницы и называть URL, ведущий к этой странице. Кроме того, все это можно распространить на сайт, поддерживающий ajax, чтобы быть действительно актуальным!

Использование только .htaccess

Если вы не заинтересованы в названных преимуществах метода контроллера, замените код в вашем .htaccess-файле, и ваша проблема входа на страницу будет решена.

RewriteEngine on
#catch www.example.com/login.php and redirect without user's conciousness to www.example.com/pages/login.php
RewriteRule ^(login.php)$ http://www.example.com/pages/login.php [NC,L,QSA]
# Prevent people from looking inside the .htacces file.
<Files .htaccess>
order allow,deny
deny from all
</Files>

Если вы хотите получить больше (и на самом деле полезно) знаний и хотите изучить универсальную технику запуска CMS с названными преимуществами, продолжайте читать!

Цель этого примера

Когда пользователь вызывает URL «www.example.com/login», будет загружена страница входа («login.php»).

Настроить

Вам нужен .htaccess-файл в корневом каталоге.
Вам нужен «контроллер» в корневом каталоге (я предлагаю index.php).
Вам нужны где-то страницы с контентом, в этом примере это файл с именем «login.php» в root / pages.
Htaccess перенаправляет все URL-адреса на этот контроллер, а также передает URL-адрес, первоначально вызванный пользователем. На основе переданного URL контроллер решает, какой контент страницы загрузить. В нашем случае это будет login.php.

контроллер

путь: корень / index.php

<?php

function callPage($data) {
if (isset($data['path'])) {
// get the correct file for the given path
switch ($data['path']) {
case "login":
include("/pages/login.php");
break;
default:
// show 404 error if given path is unknown
include("/pages/error.php");
}
}
}

?>

<html>
<head></head>
<body>
<div id="page"><?php callPage($_GET); ?><!-- load called page's content --></div>
</body>
</html>

Пример содержания страницы

путь: root / pages / login.php

<p>I am a happy login page. See, that I don't need any HTML Tags, a body or a head, because I am meant to be used only when mother index.php calls me up and integrates me. Life's so easy!</p>
<p>And do you know what's the best? I can even run PHP inside myself! Awesome, isn't it?</p>

.Htaccess-файл

путь: корень / .htaccess

RewriteEngine on
#if called file or directory reallyexists, don't redirect (might lead into a loop)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#redirect every URL (that does not really exist) to index.php
#the URL the user called can be accessed in index.php in $_GET['path']
RewriteRule ^(.*)$ http://www.exampe.com/index.php?path=$1 [NC,L,QSA]

# Prevent people from looking inside the .htacces file.
<Files .htaccess>
order allow,deny
deny from all
</Files>

импульсов

Это, конечно, очень простой пример. В настоящее время нет преимущества в использовании этого метода вместо простого перенаправления в .htaccess-файле, а есть только недостатки. Но теперь вы сами можете его улучшить. Некоторые возможности:

  • index.php: заменить коммутатор на вызов базы данных. Он принимает URL пользователя и возвращает соответствующий «реальный» URL (тот, который пользователь никогда не видит)
  • Добавить заголовок на страницу (также сохраняется в базе данных)
  • Реализовать Ajax-поддержку для вашего сайта

    В конце концов, это приводит к небольшой системе, которая может быть расширена до собственной CMS

    0
  • Другие решения

    Других решений пока нет …

    По вопросам рекламы ammmcru@yandex.ru
    Adblock
    detector