2014-01-29 3 views
0

В настоящий момент сайт не использует перезаписи, я сейчас переписываю как веб-сайт, так и .htaccess, чтобы его включить. Он многоязычен, и в настоящий момент язык изменяется с помощью строки запроса (?lang=en/es/de).Правило перезаписи для нескольких языков

Я хотел бы форматировать URL, так что читает http://website.com/en/products/product1

На данный момент страницы сохраняются в виде отдельных файлов, другими словами, это не полностью переписан, такие как: http://website.com/index.php?page=product1&category=product&lang=en

Становится :

http://website.com/en/products/product1

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

Проблема, с которой я столкнулась, это регулярные решения, которые я нашел в другом месте, заменяют часть ?lang=en, а затем помещают ее в конец URL-адреса. Как я могу сделать это сразу после домена в URL-адресе, как показано выше?

Надеюсь, что это ясно, спасибо заранее.

ответ

0

Я надеюсь, что эта надежда/* скопируйте и вставьте ниже, сохраните имя. Htaccess */

RewriteEngine On 
RewriteBase /website.com/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
#ex1:http://website.com/en/products/product1 
RewriteRule ^([a-zA-Z_-]+)/([a-zA-Z_-]+)/([a-zA-Z_-]+)?$ index.php?lang=$1&category=$2&page=$3 [L] 

/* и в файл PHP */

<!-- #ex1:http://website.com/en/products/product1 --> 
<a href="<?php echo "en/products/product1" ?>">Link</a> 
+0

Is поддельный каталог (SEO) ** продукты ** в то время как категория хочет ** продукт **? Будьте осторожны с этим! –

1

Поместите этот код в файле: DOCUMENT_ROOT/.htaccess

RewriteEngine On 
RewriteBase/

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} \s/+index\.php\?page=([^&]*)&category=([^&]*)&lang=([^&\s]*) [NC] 
RewriteRule^/%3/products/%1? [R=302,L] 

# internal forward from pretty URL to actual one 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?page=$3&category=product&lang=$1 [L,QSA] 
+0

Примечание. Я упоминал, что это ** не текущий формат URL **, страницы хранятся в виде отдельных файлов, таких как 'http: // website.com/fluffy-bunny.php' и' http://website.com/small -cat.php' – Charlie

+0

Вы также написали «Я хотел бы отформатировать URL-адрес, чтобы он читал http: // website.com/en/products/product1', это правило для этой схемы. – anubhava

+0

Хорошо, похоже, не работает, в идеале я должен попытаться прикоснуться к регулярному выражению. Вы предлагаете мне «конвертировать» мой сайт на общую «единую индексную страницу с несколькими строками запросов»? – Charlie

Смежные вопросы