RewriteRule в htaccess

TD
На сайте с 26.09.2012
Offline
2
604

Необходимо на сайте сделать ссылки с ЧПУ...(динамика в статику)

Не получается сделать что бы два файла работали одновременно.

По отдельности файлы работают

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)$ view_settings.php?id=$1 [L]

RewriteRule ^([a-zA-Z0-9_-]+)/$ view_settings.php?id=$1 [L]

А вот вместе не хотят...

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)$ view_settings.php?id=$1 [L]

RewriteRule ^([a-zA-Z0-9_-]+)/$ view_settings.php?id=$1 [L]

#

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-z0-9]+)$ view_serii.php?id=$1 [L]

RewriteRule ^([a-z0-9]+)/$ view_serii.php?id=$1 [L]

Как нужно правильно изменить(добавить)?

За ранее спасибо!

dma84
На сайте с 21.04.2009
Offline
168
#1
ToDoS1:
Необходимо на сайте сделать ссылки с ЧПУ...(динамика в статику)
Не получается сделать что бы два файла работали одновременно.
По отдельности файлы работают

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ view_settings.php?id=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ view_settings.php?id=$1 [L]

А вот вместе не хотят...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ view_settings.php?id=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ view_settings.php?id=$1 [L]
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)$ view_serii.php?id=$1 [L]
RewriteRule ^([a-z0-9]+)/$ view_serii.php?id=$1 [L]
Как нужно правильно изменить(добавить)?
За ранее спасибо!

И не будут работать, у вас в первом реврайте указано, что это последнее правило - [L]

Попробуйте так


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/?$ view_serii.php?id=$1 [L]
TD
На сайте с 26.09.2012
Offline
2
#2

Отдельно работает

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/?$ view_serii.php?id=$1 [L]

Но вместе нет


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ view_settings.php?id=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ view_settings.php?id=$1 [L]
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/?$ view_serii.php?id=$1 [L]
IL
На сайте с 20.04.2007
Offline
435
#3

ToDoS1, а как определить blabla/ это view_settings или view_serii ?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
TD
На сайте с 26.09.2012
Offline
2
#4
ivan-lev:
ToDoS1, а как определить blabla/ это view_settings или view_serii ?

Есть два файла view_settings.php и view_serii.php нужно что бы в них работали ЧПУ...

А вот как сделать правильную запись в htaccess я не знаю...

dma84
На сайте с 21.04.2009
Offline
168
#5
ToDoS1:
Есть два файла view_settings.php и view_serii.php нужно что бы в них работали ЧПУ...
А вот как сделать правильную запись в htaccess я не знаю...

Вы покажите строчки из ЧПУ, по которым нужно определить, какой скрипт должен отрабатывать

IL
На сайте с 20.04.2007
Offline
435
#6

Проблема не от "незнания правильной записи", а от непонимания того, что происходит.. и что нужно сделать.

Очень кратко:

1. ЧПУ работает не "в файлах".

2. правила обрабатываются сверху вниз. Если текущий адрес подходит под регулярное выражение, указанное после RewriteRule - правило применяется, если нет - пропускается.

3. Если было применено правило и указан флаг [L] - дальнейшие правила не используются.

Под правило ^([a-zA-Z0-9_-]+)/$ подходит любой адрес из цифробукв(и символов минус иподчёркивания _-), заканчивающийся на слэш. Естественно, оно и применяется.

Я бы добавил "индикатор", к чему относится тот или иной URL

К примеру, так (вставлять (!)перед первым RewriteCond %{REQUEST_FILENAME} !-f

):

RewriteRule ^serie/([a-z0-9]+)/$ view_serii.php?id=$1 [L]

Тогда серия omega, например, будет открываться по адресу

site.ru/serie/omega/

* и склеил бы URL-ы с завершающими слэшами и без них

---------- Post added 06-12-2012 at 12:04 ----------

dma84:
Вы покажите строчки из ЧПУ, по которым нужно определить, какой скрипт должен отрабатывать

Да в том-то и дело, что нет их..

TD
На сайте с 26.09.2012
Offline
2
#7
dma84:
Вы покажите строчки из ЧПУ, по которым нужно определить, какой скрипт должен отрабатывать

Вот фрагмент кода файла settings.php

$result2 = mysql_query ("SELECT * FROM settings WHERE page='$id'",$db);

Просто берётся значения с поля PAGE и присваивается...

Т.е ссылка обретает вид вместо

view_settings.php?id=1
==> значение Page (которое задаётся произвольно в админке)

htaccess имел такой вид (и всё работало)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ view_settings.php?id=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ view_settings.php?id=$1 [L]

Теперь появилась ещё одна страница (view_serii) - и что теперь добавить с htaccess я не понимаю...

---------- Добавлено 06.12.2012 в 12:51 ----------

ivan-lev:



Тогда серия omega, например, будет открываться по адресу
site.ru/serie/omega/

Получается так...

site.ru/serie/1/

Всё работает, только стили теряются...

Пришлось в фалй добавить ../style.css

А вот с логотипом что делать.... если подправить... то в других местах слезает

P8
На сайте с 31.10.2012
Offline
10
#8

Люди добрые, помогите пожалуйста составить 301 редирект следующего типа:

есть страница htttp://site.ru/article/13-help-me-now

нужно сделать редирект на

htttp://site.ru/article/13-help-me-now-please.html

VHS-1980
На сайте с 21.05.2010
Offline
91
#9
ToDoS1:

Всё работает, только стили теряются...
Пришлось в фалй добавить ../style.css
А вот с логотипом что делать.... если подправить... то в других местах слезает

http://htmlbook.ru/html/base/href

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий