ошибка mod_rewrite - PullRequest
       4

ошибка mod_rewrite

0 голосов
/ 15 июля 2011

Я использую mod_rewrite на моем новом веб-сайте.

.htaccess файл

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rwr=$1

index.php файл

if (isset($_REQUEST['rwr'])) {
    if (substr($_REQUEST['rwr'], -1) == "/") {
        $modrewrite = substr($_REQUEST['rwr'], 0, -1);
    } else {
        $modrewrite = $_REQUEST['rwr'];
    }
    $modrewrite = explode("/", $modrewrite);
}
if (isset($modrewrite) && $modrewrite[0] != "") {
    $category = $modrewrite[0];
} else {
    $category = null;
}

if (isset($modrewrite[1])) {
    $service = $modrewrite[1];
} else {
    $service = null;
}

if (isset($modrewrite[2])) {
    $identification = $modrewrite[2];
} else {
    $identification = null;
}

С этой ссылкой www.domain.com/service/webdesign/works перейти к -

$category = "service";
$service = "webdesign";
$identification = "works";

Это работает, но я хочу оптимизировать его:

.htaccess файл

RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)$ index.php?category=$1&service=$2&identification=$3

файл index.php

$category = $_GET['category'];
$service = $_GET['service'];
$identification = $_GET['identification'];

Но это не работает.Зачем?Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 15 июля 2011

Ваше правило должно работать нормально для рассматриваемого URL.Это может быть ваша конфигурация Apache и / или файлы с похожим именем, которые ее вызывают.Давайте возьмем ваш пример URL /service/webdesign/works.Возможно, у вас есть файл с именем service.php, тогда Apache может по какой-то причине проигнорировать это правило перезаписи.

Вы можете использовать этот подход:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

# Do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]

# the rewrite rule
RewriteRule ^([a-z0-9\-_]*)(/([a-z0-9\-_]+))?(/([a-z0-9\-_]+))?$ index.php?category=$1&service=$3&identification=$5 [NC,QSA,L] 

Это проверенное и работающее решение.

...