2016-06-13 3 views
1

Это компиляция разделенных вещей, которые я собрал, заперев, но я не могу понять, как заставить их работать вместе..htaccess mod rewrite - переменное количество частей

Конфигурация

Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
  1. Удалить www.

    RewriteCond %{HTTP_HOST} www.sitename.com [NC] 
    RewriteRule ^(.*)$ http://sitename.com/$1 [R=301,L] 
    
  2. расширение Удалить

    RewriteCond %{REQUEST_FILENAME}.php -f 
    RewriteCond %{REQUEST_URI} !/$ 
    RewriteRule (.*) $1\.php [L] 
    
  3. Управление языком в первой позиции и странице во втором.
    Пример 1: sitename.com/en/news считывает из sitename.com/news.php?lang=en
    Примера 2: sitename.com/pt/about считывает из sitename.com/about.php?lang=pt

    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule .* - [L] 
    RewriteRule ^([^/]+)/([^.]+) /$2.php?lang=$1 [L,NC,QSA] 
    
  4. Управления языка в первой позиции, страницы в секунде, и название статьи в третьих, только если второй параметром является «статьями '
    Пример: sitename.com/en/article/article-url-name чтение из sitename.com/news.php?urlname=article-url-name&lang=en

    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule .* - [L] 
    RewriteRule ^([^/]+)/article/(\d+)*$ /news.php?urlname=$2&lang=$1 [L,NC,QSA] 
    

Основная проблема - 3 и 4. Я могу сделать только одну работу, если другой не существует.

Конечная цель состоит в том, чтобы:

Английский:

  • sitename.com/en
  • sitename.com/en/about
  • sitename.com/en/news
  • sitename.com/ru/article/123
  • sitename.com/ru/contacts

Португальский:

  • sitename.com/pt
  • sitename.com/pt/about
  • sitename.com/pt/news
  • sitename.com/pt/article/123
  • sitename.com/pt/contacts
+1

любой из ответов работал на вас? – bassxzero

+0

не полностью, но мы получаем очень близко –

ответ

1

заменить ваш # 3 и # 4 блоков со следующим:?

RewriteCond %{REQUST_FILENAME} -d [OR] 
RewriteCond %{REQUST_FILENAME} -f 
RewriteRule^- [L] 
RewriteRule ^(en|pt)/article/([0-9]+)/?$ /news.php?urlname=$2&lang=$1 [NC,L] 
RewriteRule ^([^/]+)/([^/]+)/?$ /$2.php?lang=$1 [NC,L] 
+0

этот вид работал для меня, только не когда example.com/en он не найден –

+0

Я закончил тем, что понял это, добавив RewriteRule^(en | pt) /? lang = $ 1 [NC, L] Проблема теперь относительный url для изображений и так ... любые советы по этому поводу? –

+0

с использованием решил это. спасибо, вы ответ многое помогли. –

0

sitename.com/en/article/article-url-name читать из sitename.com/news.php?urlname=article-url-name & языки = еп

RewriteRule^([AZ] {2})/article/([az -] +)/$ /news.php?URLNAME = $ 2 & языки = $ 1 [L, NC, QSA]

sitename.com/pt/about считывает из sitename.com/about.php?lang=pt

RewriteRule^([ AZ] {2})/([AZ] +) $ $ 2.php языки = $ 1 [L, NC, QSA]