.htaccess для добавления динамических сегментов URL в существующее правило перезаписи - PullRequest
2 голосов
/ 16 марта 2011

Итак, у меня есть это правило

# Rewrite for account view
RewriteRule ^([^/]+)/([^/]+)/?$ account.php?type=$1&user=$2 [NC,L]

, которое переводится как http://www.site.com/user/s2xi

, но теперь я хочу еще более креативно использовать URL-адрес и добавить к нему местоположение темытак:

http://www.site.com/user/s2xi/theme/slate/

, чтобы я мог, например, получить доступ к файлу CSS для темы, мне просто нужно было бы набрать

http://www.site.com/user/s2xi/theme/slate/css/slate.css

как я могу изменить или добавить другой RewriteRule, чтобымогу ли я получить желаемые результаты?

также, как я смогу применить и получить доступ к файлам моей темы с новым URL в моем коде PHP?

мой текущий путь к темамlibrary/themes/users/slate с подпапками /css и /js

Моя попытка:

# Rewrite for user theme location
RewriteRule ^([^/]+)/([^/]+)/theme/([^/]+)/?$ account.php?type=$1&user=$2$theme=$3 [NC,L]

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

Я предлагаю перенаправить все запросы в один файл, например index.php, а затем получить URL с помощью $_SERVER['REQUEST_URI'].Затем вы можете использовать эти данные и, например, взорвать их.После этого вы сможете динамически определять, какая страница будет загружена.

Вы можете использовать следующий код для перенаправления всех запросов на index.php:

RewriteEngine on

RewriteRule .* index.php

Вы также можете исключить перенаправления определенных типов файлов в этот файл PHP.Например, статический контент, такой как CSS, JavaScript и т. Д. Следующий код, например, исключит все файлы с расширением CSS, JS, PNG или JPG:

RewriteEngine on

RewriteRule !\.(css|js|png|jpg)$ index.php

Чтобы исключить все файлы, которые существуют, вы можете использовать следующий код:

RewriteEngine on

RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule .* index.php
1 голос
/ 16 марта 2011

Вы можете поместить остаток пути в третий параметр get:

RewriteRule ^([^/]+)/([^/]+)/?(.*)$ account.php?type=$1&user=$2&rest_of_the_url=$3 [NC,L]

[EDIT]

Хорошо, для вашего случая я думаю, что вы должны написать перенаправление .htaccess, так что для файлов css и js apache идет непосредственно к ним. Поскольку обработка php не потребует лишних затрат, если вы не хотите проверять учетные данные пользователя или что-то в этом роде.

RewriteRule ^([^/]+)/([^/]+)/theme/([^/]+)/(.+\.(?:css|js|png|jpg))$ /library/themes/users/$3/$4 [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...