Как мога да пренапиша URL

fbian

Registered
Как мога да пренапиша следния URL адрес:
http://www.site.com/index.php?news=2
Да стане така:
http://www.site.com/index/news/2
Значи искам да скрия разширението на файла / да го направя достъпен само през това URL(Имам предвид,ако напиша - http://www.site.com/index.php/news/2 , да не може да се влезе).
Знам,че се използва htaccess,но не знам какво трябва да напиша,за да го постигна.
 
fbian каза:
Как мога да пренапиша следния URL адрес:
http://www.site.com/index.php?news=2
Да стане така:
http://www.site.com/index/news/2
Значи искам да скрия разширението на файла / да го направя достъпен само през това URL(Имам предвид,ако напиша - http://www.site.com/index.php/news/2 , да не може да се влезе).
Знам,че се използва htaccess,но не знам какво трябва да напиша,за да го постигна.

Код:
RewriteEngine On
RewriteBase /
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [L]
RewriteCond %{THE_REQUEST} index\.php [NC]
RewriteRule .* - [R=404]
 
somebody каза:
fbian каза:
Как мога да пренапиша следния URL адрес:
http://www.site.com/index.php?news=2
Да стане така:
http://www.site.com/index/news/2
Значи искам да скрия разширението на файла / да го направя достъпен само през това URL(Имам предвид,ако напиша - http://www.site.com/index.php/news/2 , да не може да се влезе).
Знам,че се използва htaccess,но не знам какво трябва да напиша,за да го постигна.

Код:
RewriteEngine On
RewriteBase /
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [L]
RewriteCond %{THE_REQUEST} index\.php [NC]
RewriteRule .* - [R=404]
Това ми помогна,но не работи цялостно.Имам предвид,че index-а ми е достъпен само от sitename.com/index,а не sitename.com/index.php,но презаписа на url-то с GET параметъра нещо не се получава.Ако можеш да ми помогнеш,ще съм ти благодарен.

П.П - Искам да те попитам и още нещо.Това за всяка страница ли трябва да го направя - имам предвид да е достъпна само ако се напише името,без разширението.
 
fbian каза:
Това ми помогна,но не работи цялостно.Имам предвид,че index-а ми е достъпен само от sitename.com/index,а не sitename.com/index.php,но презаписа на url-то с GET параметъра нещо не се получава.Ако можеш да ми помогнеш,ще съм ти благодарен.

П.П - Искам да те попитам и още нещо.Това за всяка страница ли трябва да го направя - имам предвид да е достъпна само ако се напише името,без разширението.

Това което ти дадох е точно това което искаше в първия си пост,а сега започват да се изменят нещата..

За да не се получава презаписа,и след като "index-а ти е достъпен само от sitename.com/index" явно стават "недорозомения" с другите правила които имаш в конфигурационния файл.

Дай да направим така, за да не си играем с магическа топка да покажеш моментното си съдържание на .htaccess файла и да кажеш точно с пример какво искаш да направиш.Относно послеписа ти ще ти отговоря след като направим горните две стъпки.Също незнам имаш ли си напредстава от mod_rewrite на апачето - директиви, регулярни изрази и т.н.?
 
Не...не исках да бъда разбран така.Искам да постигна същото,каквото описах в първия ми пост,но след като сложих тези правила в htaccess и написах адреса,както искам да е,страницата ми излезе все едно няма css файл.Съдържанието го има,но дизайна го няма.Иначе за достъпността,само от sitename.com/index,съм ти благодарен,че ми помогна.

В htaccess имам само това,което ми даде,защото сега започвам да разглеждам,как да си пренапиша url адресите в сайта.
Код:
RewriteEngine On
RewriteBase /
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [L]
RewriteCond %{THE_REQUEST} index\.php [NC]
RewriteRule .* - [R=404]

Иначе за регулярните изрази и другото,което ме попита - ами какво да кажа,още се уча и много,много не ги разбирам специално тях,но ще трябва да ги науча,защото се ползват.
 
Виж това вече е друго обяснение.Проблема ти идва от това, че ползваш релативни, а не абослютни пътища до стиловете.Най-лесния начин в слуая е преди тях в head частта да сложиш следния хтмл таг(най-добре след метатаговете) :

HTML:
<base href="http://сайта/" />
Ако се намира в подпапка:
HTML:
<base href="http://сайта/папка/" />

Пример за релативен път:

css/style.css

Пример за абсолютен път:

http://сайта/css/style.css

Оправи това, кажи резултата и пак ще говорим за всички урл адреси.
 
Добре.Сега показва дизайна и съдържанието,обаче страницирането ми,което ползва GET параметъра news,спря да работи.Някакви идеи от какво може да е?
 
Идеи колко искаш.Покажи как пишеш улр адреса и ще ти обясня защот става така хем да разбереш нещо ново. :wink:
 
fbian каза:
http://www.sitename.com/index/news/2

Ех, ама че си скормен и не дописваш всичко, предполагам се получава следното при странициране:

http://www.sitename.com/index/news/2?page=4

Ако е така добваи "QSA" към следното правило:
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [L]
ето така
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [QSA,L]
 
somebody каза:
fbian каза:
http://www.sitename.com/index/news/2

Ех, ама че си скормен и не дописваш всичко, предполагам се получава следното при странициране:

http://www.sitename.com/index/news/2?page=4

Ако е така добваи "QSA" към следното правило:
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [L]
ето така
RewriteRule ^index/news/(\d+)$ index.php?news=$1 [QSA,L]
Всъщност нищо не се получава.Просто не се показват резултатите от втора страница(URL-то не се променя).Добавих това,което ми каза и отново без резултат.
 
fbian каза:
Всъщност нищо не се получава.Просто не се показват резултатите от втора страница(URL-то не се променя).Добавих това,което ми каза и отново без резултат.

Трудна ще да е,да направим така покажи ми линковете за страницирането към каквъв урл адрес сочат.
 
somebody каза:
fbian каза:
Всъщност нищо не се получава.Просто не се показват резултатите от втора страница(URL-то не се променя).Добавих това,което ми каза и отново без резултат.

Трудна ще да е,да направим така покажи ми линковете за страницирането към каквъв урл адрес сочат.
Да речем за следваща страница:
<a href='$url/$from/$next'>>></a>
$url / $from са ми параметри на функцията за страницирането и да речем за новите те са:
$url = index
$from = news
$next = номера на следващата страница спрямо тази,на която си в момента.
 
fbian каза:
Да речем за следваща страница:
<a href='$url/$from/$next'>>></a>
$url / $from са ми параметри на функцията за страницирането и да речем за новите те са:
$url = index
$from = news
$next = номера на следващата страница спрямо тази,на която си в момента.

Добре, значи да разбирам че в

http://www.sitename.com/index/news/2

цифрите са номера на страницата така ли ?

Ако е така тогава параметъра за страницирането би трябвало да се казва news защото това нещо се разбира като index.php?news=2

Промени <a href='$url/$from/$next'>>></a> на <a href=http://сайта/'$url/$from/$next'>>></a>
 
somebody каза:
fbian каза:
Да речем за следваща страница:
<a href='$url/$from/$next'>>></a>
$url / $from са ми параметри на функцията за страницирането и да речем за новите те са:
$url = index
$from = news
$next = номера на следващата страница спрямо тази,на която си в момента.

Добре, значи да разбирам че в

http://www.sitename.com/index/news/2

цифрите са номера на страницата така ли ?

Ако е така тогава параметъра за страницирането би трябвало да се казва news защото това нещо се разбира като index.php?news=2

Промени <a href='$url/$from/$next'>>></a> на <a href=http://сайта/'$url/$from/$next'>>></a>
Не знам...не се получава.Смятам да зарежа цялата работа с пренаписването.Ще ти дам точката,защото се занимава много с мен и ти отнех много време,за което съжалявам и ти благодаря.
 
fbian каза:
Не знам...не се получава.Смятам да зарежа цялата работа с пренаписването.Ще ти дам точката,защото се занимава много с мен и ти отнех много време,за което съжалявам и ти благодаря.

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

Back
Горе