htaccess выберите любой URL - PullRequest
       1

htaccess выберите любой URL

1 голос
/ 21 февраля 2012

Я хочу перенаправить все URL-адреса, пытающиеся получить доступ к файлам в папке, на общую страницу php, где я регистрирую загружаемый файл, а также проверяю, вошел ли пользователь в систему или нет, я пытаюсь следующим образом, но я не получаю требуемый результат

Метод 1:

RewriteEngine on
RewrteRule ^(.+)$ index.php?file=$1

Метод 2:

RewriteEngine on
RewriteRule ^([a-zA-Z0-9\-]+)$ index.php?file=$1

Мой index.php

<php echo 'file - ' . $_REQUEST['file']; ?>

Когда я использую URL как http://localhost/next/files/Cool Метод вывода 1:

file - index.php 

Метод вывода 2:

file - Cool 

Не могли бы вы сказать мне, что не так я делаю в методе 1. Я мог бы использовать Method-2, но fileName может быть любым [может содержать все символы], поэтому мне нужно регулярное выражение, которое охватывает все [как в Method-1]

Привет

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Проблема с методом 1 заключается в том, что вы создаете бесконечное перенаправление.Поскольку все файлы перенаправляются в index.php, сам index.php также перенаправляется в index.php и т. Д.

Вы должны явно исключить index.php из перенаправления:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.+)$ /index.php?file=$1
1 голос
/ 21 февраля 2012

Напишите свое первое правило так:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-f
# forward requests to index.php as a query parameter
RewriteRule ^(.*)$ index.php?file=$1 [QSA,L]

А внутри вашего index.php читайте file параметр запроса как:

echo 'file - ' . $_GET['file'];
1 голос
/ 21 февраля 2012
RewriteEngine on
RewriteRule ^(.*)$ index.php?file=$1 [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...