Apache mod_rewrite Чистые URL - PullRequest
       15

Apache mod_rewrite Чистые URL

0 голосов
/ 07 апреля 2011

Я использую CodeIgniter на PHP, и он генерирует следующие URL:

http://my.domain.com/app/index.php?/admin/main/

/index.php? является избыточным, поэтому я удаляю его успешно со следующим правилом перезаписи:

RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ ./index.php/$1 [L]
* 1007Тем не менее, я также хотел бы удалить часть /app, но при этом я получаю ошибку 500.Это связано с Code Igniter - или как правильно переписать это правило (если это возможно)?Я пробовал со следующим:
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ ./app\/index.php/$1 [L]

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

Извините, но это действительно старый способ написания htaccess для CI, если htaccess находится в главном каталоге проекта, просто используйте приведенный ниже универсальный код htaccess (для этого не нужны исключенные каталоги и такие, как старый, т.е.

RewriteCond $1 !^(index\.php|images|robots\.txt)

так что это также лучше и, как я сказал универсально)

* Это не решит вашу проблему с каталогом, но это лучший способ для CI при обработке удаления index.phpбез необходимости возвращаться каждый раз, когда вы добавляете, скажем, папку с документами или что-то в этом роде.

Удивительный htaccess:

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
0 голосов
/ 07 апреля 2011

Попробуйте добавить rewritebase RewriteBase /Path/to/directory/DirectoryBelowApps/

...