Страницы были такого вида:
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
Вот теперь страницы которые были:
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 написал(а):
Не фурычит
Спустя 8 минут, 43 секунды (8.10.2012 - 12:49) killer8080 написал(а):
VELIK505
покажи что не работает.
покажи что не работает.
Спустя 1 минута, 24 секунды (8.10.2012 - 12:50) VELIK505 написал(а):
zakazreklam?pr=small так и открываеться
а так zakazreklam/small даёт 404ую
а так zakazreklam/small даёт 404ую
Спустя 2 минуты, 38 секунд (8.10.2012 - 12:53) killer8080 написал(а):
ты же говорил, что нужен редирект отсюда
index.php?s=zakazreklam&pr=small
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?
может лучше сделать через 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 идут:
и которые следующие геты то:
в zakazreklam.php такое:
Через жопу да всё сделал?
И если теперь katalog&
то конструкция
не выведет титил так как такого урла не должно быть.
<?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] |
Спасибо!
Спустя 1 час, 23 минуты, 13 секунд (8.10.2012 - 15:01) lans8097 написал(а):
Цитата (VELIK505 @ 8.10.2012 - 10:29) |
меня через switch корневой index.php идут:<?php и которые следующие геты то: в zakazreklam.php такое: <?php Через жопу да всё сделал? И если теперь katalog& то конструкция <?=$seo_title[parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)];?> не выведет титил так как такого урла не должно быть. |
Ну почему через жопу в принцепе я видел и похуже ))
Тут всё дело в практике