Нужно сделать один перепирайк хорошо играть с другим, смущенно слабым пониманием принципов Mod_rewrite, стоящих в пути

StackOverflow https://stackoverflow.com/questions/3575797

Вопрос

У меня есть следующая система:

Windows Server '03.
IIS 6 (Стреляй меня)
PHP 5.2.14.
WordPress 3.0.1.
WPML 1.8.1.2

Я добавил WordPress на существующий сайт высокого движения, в каталоге, который мы позвоним

http: // thehost / wordpress /

Для функций mod_rewrite есть функции, я использую Helicon's isapi_rewrite 3.1.0.76. Я использую его, чтобы включить «красивые» постоянные ссылки в установке WordPress. Единое правило это:

Переписать ^ / WordPress / (?! Index.php) (?! WP) ([^.] *) $ /Wordpress/index.php/$1 [i, l

Однако мне нужно добавить еще одно правило, и ни одно из моих двойных стратегий мышления его сквозь и не поручив его, не одержал плоды.

Мой сайт полностью двуязычный. Нет никаких страниц, которые не под одной из двух следующих подкаталогов:

http: // thehost / en / ru / для английского и

http: // thehost / sp / для испанского.

Это конвенция, которую я стремлюсь, чтобы поддерживать даже для установки WordPress. В настоящее время у меня есть несколько взломанная версия WPML (многоязычный плагин WordPress MultiLyual), и она работает так, чтобы все страницы и сообщения - независимо от языка - включают либо / ru / или the / sp / ruL. Это привело меня к веществу, что я болен близко - возможно, только один переписал! Моя проблема, хотя, как описано, состоит в том, что я не могу получить его на работу.

Итак, если у меня есть этот URL-адрес где-то в моем WordPress, установите:

http: // thehost / wordpress / en / 2010/08 / omg-this-post-is-inshiance /

Как я могу преобразовать его в

http: // thehost / en / wordpress / 2010/08 / OMG-This-Post-Is-In-english /

пока Не теряя постоянные ссылки WordPress? Мне удалось поменять / ru / в правильное местоположение (^ / en / wordPress /(.*) / WordPress / EN / $ 1), но я не могу получить два правила, чтобы хорошо играть вместе. Это моя проблема. Ну, это и несколько других не подходит для StackoverFlow.com.

Спасибо за ваше время.

Это было полезно?

Решение

Попробуйте церовать правила с флагом «C». Пример:

RewriteRule ^/en/wordpress/(.*) /wordpress/en/$1 [C]
RewriteRule ^/wordpress/(?!index.php)(?!wp)([^.]*)$ /wordpress/index.php/$1 [I,L]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top