PHP / Apache: переписать правила с помощью .htaccess - PullRequest
4 голосов
/ 08 августа 2011

У меня есть небольшая дилемма с mod_rewrite.Как мне написать правило, которое решит следующее:

Если я просматриваю / en / page / page Я хочу переписать это: index.php? Language = ru & page = / page

НО, если я просто просмотрю / page Я хочу переписать это на: index.php? Page = / page

Возможно ли это?

Редактировать:/ page - это просто произвольное динамическое имя страницы, оно также может быть независимо от .

Мне нужно правило, которое проверяет, например, / se == строку и не длиннее 2 символов> / page-> index.php? lang = se & page = / page и при просмотре страницы / страницы он заметит, что / page == длиннее 2 символов, и перепишет в index.php? page = / page

Edit2:Нашел ответ на мой вопрос:


    RewriteEngine On
    RewriteBase /

    ## Check if its not a filename or dirname
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    ## Rewrite rules
    RewriteRule ^(.{2})/(.*)$ index.php?lang=$1&page=$2 [L]
    RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

Я заставил его работать самостоятельно! Вот правила, если кому-то еще нужно сделать то же самое:

    RewriteEngine    On
    RewriteBase    /

    ## Check if its not a filename or dirname
    RewriteCond %{REQUEST_FILENAME}    !-l
    RewriteCond %{REQUEST_FILENAME}    !-f
    RewriteCond %{REQUEST_FILENAME}    !-d

    ## Rewrite rules
    RewriteRule ^(.{2})/(.*)$    index.php?lang=$1&page=$2 [L]
    RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
0 голосов
/ 08 августа 2011

попробуйте это:

RewriteRule ^(.*)/(.*)(/.*)$ index.php?language=$1&$2=$3 [L]
RewriteRule ^page$ index.php?page=/page/page [L]
0 голосов
/ 08 августа 2011
RewriteRule ^page$ index.php?language=en&page=/page/page [L]
RewriteRule ^page/ index.php?language=en&page=/page [L]
...