mod rewrite и линкове

stoqnski

Registered
Ако в сайта си имаm .htaccess

и от news.php?id=1 го правя на /news/1

то в URL-то като изпиша /news/1 се отваря , а също и news.php?id=1 също

Как да го направя да излиза единствено /news/1 без news.php?id=1 и тогава как ще взимам параметъра с $_GET ?
 
Използвай Redirect 301
Код:
RewriteEngine on
RewriteRule ^news\.php?id=(\d+)$ http://site.com/news/$1 [R=301]
RewriteRule ^news/(\d+)$ news.php?id=$1 [end]
С втория ред пренасочваш от news.php?id=5 към /news/5, а третия ред би трябвало да е като този, който ти използваш. :?:
 
anonimen каза:
Използвай Redirect 301
Код:
RewriteEngine on
RewriteRule ^news\.php?id=(\d+)$ http://site.com/news/$1 [R=301]
RewriteRule ^news/(\d+)$ news.php?id=$1 [end]
С втория ред пренасочваш от news.php?id=5 към /news/5, а третия ред би трябвало да е като този, който ти използваш. :?:

и аз така знам , но тези пренасочвания ( 301 redirect ) няма ли да повлияят зле на SEO-то ?

и какво е "(\d+)" ? и защо е нужен 3тия ред ?
 
stoqnski каза:
и аз така знам , но тези пренасочвания ( 301 redirect ) няма ли да повлияят зле на SEO-то ?
Честно казано нямам никаква представа :)
stoqnski каза:
и какво е "(\d+)" ? и защо е нужен 3тия ред ?
Това е за да матчнеш неопраделен брой числа. Значи втория ред пренасочва (променя урл-то в браузъра) към по-хубавото.
Тоест ако въведеш
/news.php?id=5
ще пренасочи юзера към
/news/5
И потребителят ще вижда хубавото урл. Обаче ако го оставим така, ще даде object not found, просто защото файл /news/5 не съществува. Затова използваме третия ред, който преправя урл-то обратно към news.php?id=5. Това става само на сървъра, потребителят не вижда това преправяне.

Разликата е, че едното пренасочва на ниво клиент (ако мога да се изразя така), а другото - на "ниво сървър". При клиента се пренасочва самата страница, а при сървъра - всичко става вътрешно. Тоест при "влизането" на /news/5 htaccess вижда това, и го преправя на /news.php?id=5, и "предава" урл-то нататък. После "file explorer-a:D"вижда това урл и дава съответната страница. При клиента (лошото урл) htaaccess вижда урл-то и казва на клиента "пренасочи към това урл", като подава хубаво урл. В този случай това урл не стига по-навътре.

Не претендирам, че нещата стават точно така, но това е начинът, по който аз си ги обяснявам.
 

Back
Горе