2015-03-25 6 views
0

Я пытаюсь использовать файл htaccess для перезаписи URL-адресов, у меня действительно есть нулевой опыт, и все, что я сделал, - это искать здесь и в google. Мои ссылки содержат параметры запроса. Я отправляю все на страницу index.php.htaccess с несколькими параметрами не работает ,?

Я проверил все ссылки, прежде чем пытаться переписать их, и все они работают на индексной странице. Итак, я создал файл htaccess для перезаписи ссылок, но все, что я получаю, является пустой страницей, ни одна из переменных не отправляется на индексную страницу. Я использую $ _GET на странице index.php для извлечения переменных.

Вот список типов ссылок, которые я пытаюсь переписать вместе с копией моего фактического файла htaccess, также работает mod rewrte и работает правильно в apache. Пожалуйста, помогите мне изменить файл htaccess, чтобы сделать ТОЧНО, что я хочу, в соответствии с образцами ссылок, которые я привел ниже, пожалуйста?

Переписывание каталога в порядке и работает соответственно, это ссылки, которые этого не делают.

Кроме того, если вы заметили в ссылки # 1 и # 2страница параметр не имеет и не должен появляться в переписаны ссылки на эти 2 ссылки ТОЛЬКО но пустой или пустая строка по-прежнему отправляется на мой index.php.

example--

<?php 

$page= $_GET['page']; 
$user= $_GET['user']; 
$act= $_GET['act']; 
$section= $_GET['section']; 
$search= $_GET['search'] 
$xx= $_GET['xx']; 

if($page == ''){ 
    //Do some code 
}elseif($page == 'search'){ 
    //Do some code 
?> 

Перепишите эти типы ссылок

примечание - «Http: //» является фронт всех этих звеньев, переполнение стека не позволил бы мне добавить и должность.


LINK # 1

локальный/notetag2/JohnSmith/все/1

- REWRITE К -

локальный/notetag2/index.php страница = & пользователь = johnsmith & act = все & раздел = 1


LINK # 2

локальный/notetag2/JohnSmith/все

- REWRITE К -

локальный/notetag2/index.php?страница = & пользователь = JohnSmith & акт = все


LINK # 3

локальный/notetag2/поиск/JohnSmith

- REWRITE К -

локальный /notetag2/index.php?page=seach & search = johnsmith


ССЫЛКА # 4

локальный/notetag2/фото/1

- перезаписи -

локальный/notetag2/index.php страница = & картинки xx = 1


Rewr Каталог ITE

страницы

--REWRITE , целью которых

веб


ВОТ МОЯ АКТУАЛЬНО файл .htaccess

<IfModule mod_rewrite.c> 

    RewriteEngine on 
    RewriteBase /notetag2/ 
    RewriteRule ^index\.php$ - [L] 

    RewriteRule ^(.*)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=$1&user=$2&act=$3&section=$4 [L,NC] 

    RewriteRule ^(.*)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=$1&user=$2&act=$3 [L,NC] 

    RewriteRule ^(.*)/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=$1&user=$2 [L,NC] 

    RewriteRule ^(.*)/$ notetag2/index.php?page=$1 [L,NC] 

    RewriteRule ^search/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=search&q=$1 [L,NC] 

    RewriteRule ^pictures/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=picturesh&xx=$1 [L,NC] 

    RewriteRule ^([a-zA-Z0-9_-]+)/?$ $1.php [L,NC] 


    RewriteRule ^pages/(.*) web/$1 [L] 


    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule .* /notetag2/index.php [L,QSA] 

</IfModule> 
+0

Почему ваш файл htaccess говорит «notetag2», но ваш вопрос хочет, чтобы вещи переписывались с/на «notetag»? Они должны быть разными? –

+0

Нет, они не разные. Они одно и то же. Я не использую копию и вставку. Я печатаю все и просто ошибся, набрав его здесь. Теперь он был изменен в моем посте. сказать notetag2 и not notetag. Не могли бы вы помочь с моим вопросом? –

+0

где ваш файл htacces? –

ответ

0

Вы должны исправить пару ваших обычные выражения. Поскольку ваш файл htaccess находится в каталоге notetag2, вам не нужно сопоставлять с ведущим «notetag2».

Но, во-первых, ваши правила не в правильном порядке. Если вы хотите соответствовать /search/something, значит у вас не может быть правила, который соответствует anything, в противном случае это будет соответствовать /search. Таким образом, эти правила должны быть на вершине:

RewriteRule ^search/([a-zA-Z0-9_-]+)/?$ index.php?page=search&q=$1 [L,NC] 
RewriteRule ^pictures/([a-zA-Z0-9_-]+)/?$ index.php?page=picturesh&xx=$1 [L,NC] 

Вы также не нужно notetag2/ в цель вашего правила в так что это подразумевает, потому что правила находятся в каталоге notetag2.

Таким образом, после этих 2 правил, вы должны принять каждый из ваших переписывает, начиная от самого большого до самого маленького:

локальный/notetag2/JohnSmith/все/1

--REWRITE TO- -

localhost/notetag2/index.php?страница = учебник & пользователя = JohnSmith & акт = все & раздел = 1

Вы чуть было, что, только что некоторые случайные (.*)/ перед регулярным выражением, которое сделает его никогда не соответствует тому, что вы хотите. Вы хотите вместо этого:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=tutorial&user=$1&act=$2&section=$3 [L,NC] 

Тогда для следующего:

локальных/notetag2/JohnSmith/все

--REWRITE , целью которых

локальных/notetag2/индекс .php? page = учебное пособие & пользователь = johnsmith & act = все

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ notetag2/index.php?page=tutorial&user=$1&act=$2 [L,NC] 

«Поиск» и «картинки» должны быть учтены по первым двум правилам выше.

Независимо от других правил, которые у вас были в нижней части старого файла htaccess, они должны идти ниже этих правил.

Так что остается только:

страницы

--REWRITE , целью которых

веб

Поскольку эти сделать не начать с notetag2, вам нужно для размещения этих правил в другом файле htaccess, в корне вашего документа:

RewriteRule ^pages/(.*)$ /web/$1 [L] 
+0

Если вы заметили в ссылках №1 и №2 параметр страницы не должен и не должен появляться в переписанных ссылках для этих 2-х ссылок ТОЛЬКО, но пустая или пустая строка должна по-прежнему отправлять мой индекс index.php для представления этой переменной. В этих первых двух ссылках нет $ page = tutorial, переменная $ page в первых двух ссылках должна ВСЕГДА содержать пустую строку. Так что вы предложили не работает !. –

+0

@DavidCunningham В вашем вопросе указывается, что переменная страницы для этих двух ссылок ** ** ** ** –

+0

Это была ошибка, которую я сделал, когда делал остальные, я просто забыл ее исправить. В моем посте все правильно, как сейчас.Пожалуйста, обновите свой браузер и перечитайте мой пост, пожалуйста? Затем вы заметите, что в ссылках №1 и №2 параметр страницы не отображается и не должен появляться в переписанных ссылках для этих двух ссылок ТОЛЬКО, но пустая или пустая строка должна по-прежнему отправлять мой индекс index.php для представления этой переменной. В этих первых двух ссылках нет $ page = tutorial, переменная $ page в первых двух ссылках должна ВСЕГДА содержать пустую строку. Так что вы предложили не работает !. –

Смежные вопросы