Несколько Mod_ReWrites на одном сайте - возможно? (Блог Wordpress в корневом каталоге, проект CodeIgniter в подкаталоге) - PullRequest
0 голосов
/ 31 марта 2010

В настоящее время я создаю проект с CodeIgniter, который содержится в подкаталоге моего домена. Для этого примера мы назовем это domain.com/test.

У меня также установлен Wordpress в этом домене, и все его файлы находятся в корне. Например, если вы перейдете на my domain.com, то откроется блог Wordpress. В настоящее время у меня активирован WordPress mod_rewrite, поэтому он использует дружественные URL-адреса.

Для тех из вас, кто не знаком с CodeIgniter, все запросы направляются через index.php в корневую папку проекта. Так что в этом случае это будет domain.com/text/index.php. Запрос к заявке будет отправлен как domain.com/test/index.php/somecontroller/method.

То, что я хотел бы сделать, - это для любого входящего запроса, направленного на папку / test /, или на какой-либо подкаталог в нем, я бы хотел, чтобы он соответствующим образом переписал URL, чтобы index.php не был включен. (В соответствии с приведенным выше примером, это в конечном итоге будет domain.com/test/somecontroller/method)

Для любого ДРУГОГО запроса, означающего что-либо, что не находится в каталоге / test /, я бы хотел, чтобы он перенаправил запрос в Wordpress.

Я полагаю, что это простой RewriteCond, который проверяет, является ли запрос каталогом / test / или его подкаталогом, но я не знаю, как это сделать. Возможно, вы не можете иметь более одного набора правил перезаписи на сайт.

Я включу рекомендуемые правила mod_rewrite для каждого приложения.

Wordpress: (используется в настоящее время)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

CodeIgniter: (Удалено из их Wiki )

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Любая помощь очень ценится!

Спасибо

-Sootah

1 Ответ

1 голос
/ 01 апреля 2010

@ Myself и Stormdrain - Как указано в моем комментарии выше (и подробно изложенном в Stormdrain), просто поместив CodeIgniter .htaccess в подкаталог / test /, добились цели.

Ах, я должен также заметить, что мне пришлось изменить строку CodeIgniter .htaccess BasePath из этого: RewriteBase /

к этому: RewriteBase / test /

Надеюсь, это поможет всем, у кого есть такой же / похожий вопрос.

Sootah

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