перезапись URL не удалась, если в конце пропущена косая черта - PullRequest
1 голос
/ 24 июня 2011

У меня есть это, чтобы перезаписать

http://mysite.com/intranet/symlinks/site.com до http://mysite.com/site.com

или

http://mysite.com/intranet/symlinks/site.net до http://mysite.com/site.net

RewriteCond %{REQUEST_URI} ^(.*\.com|.*\.net)
RewriteRule ^(.*)$ /intranet/symlinks/$1 [L]

Отлично работает для http://mysite.com/site.com/,

, но если ссылка http://mysite.com/site.com (обратите внимание на отсутствующий / в конце)

это приведет меня к http://mysite.com/intranet/symlinks/site.com/

Любые идеи?

Редактировать 1 : я думаю, что проблема заключается в правиле, а не в условии,так как я удалил условие и продолжаю иметь ту же проблему. я перенаправлен на http://mysite.com/intranet/symlinks/site.com/

Edit 2 , это остальная часть .htaccess, это .htaccess по умолчанию из CodeIgniter:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
   Order Deny,Allow
   Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]

# MY condition rule from above is located here

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Ответы [ 3 ]

1 голос
/ 24 июня 2011

Попробуйте: (вам не нужен RewriteCond)

RewriteRule ^([^/]*\.(com|net))$ intranet/symlinks/$1 [L,QSA]

или это, если вы хотите разрешить косую черту:

RewriteRule ^([^/]*\.(com|net))/?$ intranet/symlinks/$1 [L,QSA]
1 голос
/ 24 июня 2011

Измените свою строку, чтобы дополнительно соответствовать трейлинг /:

RewriteCond %{REQUEST_URI} ^(.*\.com/?.*|.*\.net/?.*)
0 голосов
/ 25 июня 2011

В любом случае я заставил это работать, используя

RewriteCond %{REQUEST_URI} ^(.*\.com/?.*|.*\.net/?.*)
RewriteRule ^(.*)$ sites/$1/ [L]

Обратите внимание на косую черту в конце второй строки после $1.

Я почти уверен, что она не будет работать на любом другом сервереЕсли у вас есть лучшее решение, опубликуйте его, и я приму его

@ LazyOne, спасибо за вашу помощь

...