htaccess для динамической перезаписи URL с расширением .html на основе выбора URL

Я пытаюсь переписать какой-то динамический URL-адрес страницы, в которой данные берутся из базы данных с помощью ярлыка типа «this-is-a-link».

        Options +FollowSymlinks
        RewriteEngine On

        RewriteBase /testweb/

        RewriteCond %{REQUEST_FILENAME} !-d [NC]
        RewriteCond %{REQUEST_FILENAME} !-f [NC]
        RewriteRule ^(.*)$ faq_pages.php?page=$1 [QSA,L]

Он отлично работает с http://www.test.com/testweb/this-is-a-link

Но мне нужно изменить правило перезаписи на основе любой ссылки, нажатой, как показано ниже.

http://www.test.com/testweb/faq/this-is-a-link, 'testweb / news / this-is-another-link', '/ testweb / testimonials / test-link'

«faq_pages.php» в приведенном выше RewriteRule следует изменить на «news_pages.php». Как я могу использовать его динамически, чтобы использовать для каждой страницы с одним и тем же htaccess, или как я могу проверить и переписать значение на разные страницы в htaccess.

Также, пожалуйста, посоветуйте мне, как исправить приведенный ниже код.

        Options +FollowSymlinks
        RewriteEngine on
        RewriteRule ^(.*)\.html$ faq_pages.php?page=$1

Мне нужно отображать html-адреса в адресной строке, например /testweb/this-is-a-link.html или /testweb/faq/this-is-a-link.html.

Изменить: С помощью Джона Линя я обновил свои коды, как показано ниже.

        Options +FollowSymlinks
        RewriteEngine On

        RewriteBase /testweb/

        RewriteCond %{REQUEST_FILENAME} !-d [NC]
        RewriteCond %{REQUEST_FILENAME} !-f [NC]
        RewriteRule ^faq/(.*?)/?$ faq_pages.php?page=$1 [QSA]

Теперь работают оба следующих условия: /testweb/faq/another-faq-test.html,
/testweb/faq/another-faq-test.html/

Поскольку у меня нет подпапки с именем «faq», файлы шаблонов (images / css / js и т. Д.) В корневой папке не загружаются. Как я могу это исправить?

Спасибо


person user2669827    schedule 19.08.2013    source источник


Ответы (1)


Вы ищете что-то подобное?

    Options +FollowSymlinks
    RewriteEngine On

    RewriteBase /testweb/

    RewriteCond %{REQUEST_FILENAME} !-d [NC]
    RewriteCond %{REQUEST_FILENAME} !-f [NC]
    RewriteRule ^faq/(.*)$ faq_pages.php?page=$1 [QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-d [NC]
    RewriteCond %{REQUEST_FILENAME} !-f [NC]
    RewriteRule ^news/(.*)$ news_pages.php?page=$1 [QSA,L]
person Jon Lin    schedule 19.08.2013
comment
Привет, спасибо за ответ. Я использовал RewriteRule ^ faq /(.*)/$ faq_pages.php? Id = $ 1 [QSA] и RewriteRule ^ faq /(.*)$ faq_pages.php? Id = $ 1 [QSA] для перезаписи testweb / faq / другого -faq-test.html / и testweb / faq / another-faq-test.html. Скажите, пожалуйста, правильно ли это? Также, пожалуйста, помогите мне игнорировать / переписать папку «faq», потому что в настоящее время CSS или изображения не загружаются, так как в URL-адресе есть «faq /». Большое спасибо - person user2669827; 20.08.2013
comment
@ user2669827 вместо использования двух правил просто добавьте ? после /. Если вы запрашиваете статический файл в /faq/, 2 условия перезаписи не позволяют применить правило - person Jon Lin; 20.08.2013
comment
Привет. Еще раз спасибо. RewriteRule ^ faq /(.*)/?$ faq_pages.php? Id = $ 1 [QSA] не работает для /testweb/faq/another-faq-test.html/. Я использовал «faq /» и «news /» только для проверки URL-адреса и перезаписи на другие страницы. У меня нет папки с такими именами. Как я могу игнорировать это или указать, что это не каталоги .. теперь URL ищет папку 'faq' - person user2669827; 20.08.2013
comment
@ user2669827 Используйте регулярное выражение: ^faq/(.*?)/?$. И отформатируйте код в своем вопросе что ли, в комментариях прочитать невозможно - person Jon Lin; 20.08.2013
comment
Отлично .. теперь html / url тоже работает. Отредактирую вопрос. Спасибо - person user2669827; 20.08.2013
comment
@ user2669827 ваши страницы должны иметь либо абсолютные пути к своим файлам images / css / js, либо вам нужно определить относительную базу URI: <base href="/testweb/"> или другую базу, которая должна быть - person Jon Lin; 20.08.2013