[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ЧПУ закрыть 1 урл
VELIK505
Вот сделал ЧПУ.
Страницы были такого вида:
mysite.ru/index.php?s=register
mysite.ru/index.php?s=login
и тд
сделал в htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L,QSA]

стало просто mysite.ru/register
mysite.ru/login
и тд
но теперь получаеться к 1ой и той же странице можно обратить по 2ум урлам
по mysite.ru/register и по mysite.ru/index.php?s=register
то есть mysite.ru/login = mysite.ru/index.php?s=login
Как мне закрыть урлы которые index.php?s= или редиректить на саму страницу без index.php?s= или на страницу 404ой? Какое правило прописать в .htaccess ?



Спустя 1 час, 43 минуты, 5 секунд (24.09.2012 - 23:19) killer8080 написал(а):
попробуй так
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[a-z]{3,4}\s\/index\.php(\?s=([a-z\d-]+))? [NC]
RewriteRule index.php http://%{HTTP_HOST}/%2? [R=301,L]

Спустя 10 минут, 9 секунд (24.09.2012 - 23:29) VELIK505 написал(а):
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^[a-z]{3,4}\s\/index\.php(\?s=([^&\s]+))? [NC]
RewriteRule index.php http://%{HTTP_HOST}/%2? [R=301,L]

Оно. То что надо. Спасибо большое! :D

Спустя 13 дней, 13 часов, 2 минуты, 54 секунды (8.10.2012 - 12:32) VELIK505 написал(а):
Помоги ещё маленько.
Вот теперь страницы которые были:
index.php?s=zakazreklam&pr=small
стали соответственно:
zakazreklam?pr=small
А как мне теперь им сделать чпу чтобы было:
zakazreklam/small

Спустя 5 минут, 44 секунды (8.10.2012 - 12:37) killer8080 написал(а):
попробуй так
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^[a-z]{3,4}\s\/index\.php(\?s=([^&\s]+)(&pr=([^&\s]+))?)? [NC]
RewriteRule index.php http://%{HTTP_HOST}/%2/%4? [R=301,L]

Спустя 2 минуты, 21 секунда (8.10.2012 - 12:40) VELIK505 написал(а):
Не фурычит sad.gif

Спустя 8 минут, 43 секунды (8.10.2012 - 12:49) killer8080 написал(а):
VELIK505
покажи что не работает.

Спустя 1 минута, 24 секунды (8.10.2012 - 12:50) VELIK505 написал(а):
zakazreklam?pr=small так и открываеться
а так zakazreklam/small даёт 404ую

Спустя 2 минуты, 38 секунд (8.10.2012 - 12:53) killer8080 написал(а):
ты же говорил, что нужен редирект отсюда blink.gif
index.php?s=zakazreklam&pr=small

Спустя 3 минуты, 59 секунд (8.10.2012 - 12:57) VELIK505 написал(а):
Цитата (killer8080 @ 8.10.2012 - 09:53)
ты же говорил, что нужен редирект отсюда :blink:
index.php?s=zakazreklam&pr=small

Нет ты не понял.
Смотри у меня все страницы через гет.
Было так:
index.php?s=payment
index.php?s=katalog
index.php?s=zakazreklam
и тд
а так же было:
index.php?s=zakazreklam&pr=dinamika
и тд
Потом я сделал так:
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^[a-z]{3,4}\s\/index\.php(\?s=([^&\s]+))? [NC]
RewriteRule index.php http://%{HTTP_HOST}/%2? [R=301,L]

У меня соответственно стало так:
payment
katalog
zakazreklam
и тд
а так же стало:
zakazreklam?pr=dinamika
и тд
понял?
А теперь мне нужно уже гету 2ому как бы zakazreklam?pr=dinamika сделать тоже ЧПУ такое:
zakazreklam/dinamika
и тд

Спустя 2 минуты, 26 секунд (8.10.2012 - 12:59) killer8080 написал(а):
VELIK505
может лучше сделать через php?

Спустя 14 минут, 56 секунд (8.10.2012 - 13:14) VELIK505 написал(а):
Цитата (killer8080 @ 8.10.2012 - 09:59)
VELIK505
может лучше сделать через php?

Вариант подумаю над этим.
И у меня есть ещё 1 вопрос.
Вот теперь как сделать чтобы после таких урлов
katalog
zakazareklam
если подставляешь после них & то отдавал 404ую тоже?
katalog&
и тд.

Спустя 3 минуты, 24 секунды (8.10.2012 - 13:17) killer8080 написал(а):
Цитата (VELIK505 @ 8.10.2012 - 12:57)
Было так:
index.php?s=payment
index.php?s=katalog
index.php?s=zakazreklam

таких ссылок много? делать универсальное правило для файла без расширения чревато в будущем накладками, если их немного, можно объединить через или.

Спустя 1 минута, 19 секунд (8.10.2012 - 13:19) killer8080 написал(а):
Цитата (VELIK505 @ 8.10.2012 - 13:14)
Вот теперь как сделать чтобы после таких урлов
katalog
zakazareklam
если подставляешь после них & то отдавал 404ую тоже?
katalog&

зачем?

Спустя 10 минут, 9 секунд (8.10.2012 - 13:29) VELIK505 написал(а):
меня через switch корневой index.php идут:
<?php
if(isset($_GET["s"])){$s = $_GET["s"];}else{$s = "index";}
switch ($s) {
case('index'): include('stran/index.php'); break;
case('zakazreklam'): include('stran/zakazreklam.php'); break;
case('stena'): include('stran/stena.php'); break;
case('video'): include('stran/video.php'); break;
..........
............
....

default: include('stran/404.php'); break;
}
?>


и которые следующие геты то:
в zakazreklam.php такое:
<?php
if(isset($_GET["pr"])){$pr = $_GET["pr"];}else{$pr = "no";}
switch ($pr) {
case('no'): echo ""; break;
case('dinamika'): include('rekwminc/wmdinamika.php'); break;
case('paket'): include('rekwminc/wmpaket.php'); break;
case('avtoserf'): include('rekwminc/wmauto.php'); break;
............
.....................
.....................

case('individ'): include('rekwminc/wmindivid.php'); break;
default:
echo "<meta http-equiv='refresh' content='0; url=404'>";
break;
} ?>


Через жопу да всё сделал?

И если теперь katalog&
то конструкция
<?=$seo_title[parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)];?>

не выведет титил так как такого урла не должно быть.

Спустя 4 минуты, 56 секунд (8.10.2012 - 13:34) killer8080 написал(а):
RewriteCond %{THE_REQUEST} ^[a-z]{3,4}\s\/[^?]+& [NC]
RewriteRule .* - [R=404,L]

Спустя 4 минуты, 10 секунд (8.10.2012 - 13:38) VELIK505 написал(а):
Цитата (killer8080 @ 8.10.2012 - 10:34)
RewriteCond %{THE_REQUEST} ^[a-z]{3,4}\s\/[^?]+& [NC]
RewriteRule .* - [R=404,L]

Спасибо!

Спустя 1 час, 23 минуты, 13 секунд (8.10.2012 - 15:01) lans8097 написал(а):
Цитата (VELIK505 @ 8.10.2012 - 10:29)
меня через switch корневой index.php идут:
<?php
if(isset($_GET["s"])){$s = $_GET["s"];}else{$s = "index";}
switch ($s) {
case('index'): include('stran/index.php'); break;
case('zakazreklam'): include('stran/zakazreklam.php'); break;
case('stena'): include('stran/stena.php'); break;
case('video'): include('stran/video.php'); break;
..........
............
....

default: include('stran/404.php'); break;
}
?>


и которые следующие геты то:
в zakazreklam.php такое:
<?php
if(isset($_GET["pr"])){$pr = $_GET["pr"];}else{$pr = "no";}
switch ($pr) {
case('no'): echo ""; break;
case('dinamika'): include('rekwminc/wmdinamika.php'); break;
case('paket'): include('rekwminc/wmpaket.php'); break;
case('avtoserf'): include('rekwminc/wmauto.php'); break;
............
.....................
.....................

case('individ'): include('rekwminc/wmindivid.php'); break;
default:
echo "<meta http-equiv='refresh' content='0; url=404'>";
break;
} ?>


Через жопу да всё сделал?

И если теперь katalog&
то конструкция
<?=$seo_title[parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)];?>

не выведет титил так как такого урла не должно быть.

Ну почему через жопу в принцепе я видел и похуже ))
Тут всё дело в практике
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.