Htaccess mod_rewrite проблема - PullRequest
       1

Htaccess mod_rewrite проблема

1 голос
/ 17 сентября 2011

У меня проблема с этим:

RewriteEngine On
RewriteRule ^tuote/([^/]+) tuote.php?data=$1 [L]

он должен изменить все tuote/Something-Something на tuote.php?data=Something-Something на стороне сервера (не перенаправлять), но, похоже, не работает ($_GET['data'] не получает значения).

И другой вопрос:
Как я мог сделать это 1-Something-title-nice-title, чтобы перейти php

$first_part = "1";
$secnd_part = "Something-title-nice-title";

попытался взорваться, но в этом случае это не работает.

---- EDIT ----
Спасибо за ответы.

Я изменил файл htaccess на:

RewriteEngine On
RewriteRule ^tuote/(.+) tuote.php?data=$1 [L]

но все равно $_GET['data'] значение пусто. Кстати, у меня есть другой htaccess в родительском каталоге, может быть, это повлияет на код?

Другой файл htaccess содержит:

<IfModule mod_php.c>
php_flag display_errors 1
</IfModule>

AuthUserFile /var/www/somepath/.htpasswd
AuthGroupFile None
AuthName "Kirjaudu sisään"
AuthType Basic 

require valid-user

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]

И насчет второго вопроса, он начал работать. Спасибо!

Ответы [ 3 ]

1 голос
/ 17 сентября 2011

RewriteRule выглядит нормально - убедитесь, что вы правильно используете параметр строки запроса в своем коде PHP.

Что касается вашего другого вопроса, добавление limit для разнесения должно сделать это:1005 *

list($first_part, $second_part) = explode('-', $string, 2);

Для получения дополнительной информации см. Документацию PHP для explode.

1 голос
/ 17 сентября 2011
  1. Убедитесь, что у вас нет каталога "toute". Если это так, убедитесь, что у вас нет .htaccess, который имел бы приоритет.
  2. Создайте свое соответствие правилу или обязательно. RewriteRule ^(.*)$ route.php?data=$1 [L] затем посмотрите, что находится внутри $ _GET ['data'], это должно дать вам представление о том, почему ваше правило не действует.

Если это не работает, AllowOverride не работает. Подтвердите с помощью директивы опечатки в .htaccess без какого-либо влияния на apache.

Если вы получили строку, попробуйте заменить ее на более строгое правило.


По второму вопросу вы можете сделать это

list($id,$rest)=explode('-',$_GET['data'],2);

В качестве альтернативы вы можете сделать так, чтобы ваше регулярное выражение выделило отдельные части вашего URL в разные переменные $ 2 $ 3 и т. Д.

1 голос
/ 17 сентября 2011

При переписывании все, что вы делаете - проверяете 1 или более вхождений прямой косой черты. Вам нужно изменить его на что-то вроде:

RewriteEngine On
RewriteRule ^tuote/(.+) tuote.php?data=$1 [L]

По второму вопросу похоже, что вы просто пытаетесь создать одну строку:

$both_parts = $first_part . "-" . $sednd_part;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...