2015-03-15 2 views
1

У меня есть последующие проблемы, у меня есть дружественные URL-адреса для страниц на сайте:Дружественные URL перенаправление с помощью регулярных выражений

/subdir1/subdir2/UniqueID/

Некоторые страницы могут быть кэшируется как HTML (не все), поэтому мы кэшировать их в HTML файлы в папке:

/cache/uniqueID.html

так что мне нужно, чтобы показать эти страницы, только если они существуют в кэше плачевными на основе дружественного URL, мой Htaccess:

RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME}([a-z0-9]+)/([a-z0-9]+)/([0-9]+)/$ !-f 
RewriteCond %{DOCUMENT_ROOT}/cache/$3.html -f [NC] 
RewriteRule ([a-z0-9]+)/([a-z0-9]+)/([0-9]+)/$ /cache/$3.html [L] 

Это работает, но имеет 2 проблемы: 1) если имя субдира имеет «-» или «_», не работает. 2) если последний «/» нет, это не сработает.

Также я не специалист по переименованию, поэтому, конечно, есть лучший способ сделать это, любая помощь действительно ценится. Спасибо

ответ

0

Вам нужно настроить ваше регулярное выражение, чтобы разрешить дефис & подчеркнуть. Также удалите избыточное значение RewriteCond:

RewriteEngine On 
RewriteBase/

RewriteRule ^index\.php$ - [L,NC] 

RewriteCond %{DOCUMENT_ROOT}/cache/$3\.html -f [NC] 
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ cache/$3.html [L] 
Смежные вопросы