Как я пишу .htaccess файл для создания работы маршрутизации CodeIgniters URL?

что-то вроде этого близко: (непротестированный код)

byte[] data; // data goes here.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = userNetworkCredentials;
request.Method = "PUT";
request.ContentType = "application/octet-stream";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data,0,data.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
temp = reader.ReadToEnd();
reader.Close();
20
задан Carson Myers 9 September 2009 в 02:43
поделиться

4 ответа

В вашем system / application / config / config.php измените

$config['index_page'] = "index.php";

на

$config['index_page'] = "";

и в свой .htaccess добавьте это :

RewriteEngine on
RewriteCond $1 !^(index\.php|images|stylesheets|scripts|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Добавьте файл .htaccess в тот же каталог, где находится папка system , поэтому в корневом каталоге CodeIgniter у вас должно быть

  • system /
  • user_guide /
  • index .php
  • .htaccess
  • license.txt

Кроме того, поскольку на вашем сервере работает несколько сайтов, вам может потребоваться VirtualHosts. Добавьте это в последнюю часть вашего apache2.conf для каждого вашего сайта:

Listen *:11000
<VirtualHost *:11000>
     ServerAdmin you@somewhere.com
     DocumentRoot "/var/www/cms"
     ServerName you-dummy.com
     <Directory "/var/www/cms">
          AllowOverride All
          Options +Indexes
          DirectoryIndex index.php
          Order allow,deny
          Allow from all
     </Directory>
     ErrorLog logs/cms_log
     CustomLog logs/cms_log common
</VirtualHost>

Теперь вы можете получить доступ к сайту с http: // localhost: 11000 / и получить доступ к контроллер, использующий http: // localhost: 11000 / hello .

18
ответ дан 29 November 2019 в 23:33
поделиться

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

Посмотрите документацию для RewriteCond , чтобы узнать, какие еще типы условий можно указать. Как правило, RewriteRule будет применяться только в том случае, если все его предыдущие RewriteCond совпадают. Вы можете попробовать добавить эти правила для перенаправления только в том случае, если запрошенный URL не существует:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

Что касается того, что еще вы можете сделать с файлом .htaccess, то документы Apache для файлов htaccess всегда являются хорошим местом для Начало. Чаще всего используется для аутентификации по каталогам. Большинство директив конфигурации сервера поддерживаются в файле .htaccess (при условии, что сервер AllowOverride говорит об этом), но некоторые имеют другой синтаксис.

2
ответ дан 29 November 2019 в 23:33
поделиться

Поместите это в корень документа вашего веб-сайта.

Если у вас несколько сайтов, поместите его в начало каждого из них.

Если у вас несколько сайтов, запущенных с В том же каталоге вы можете использовать RewriteCond для исключения или включения определенных сайтов в правило перезаписи.

Вы можете исключить определенные каталоги (например, / article) таким же образом.

1
ответ дан 29 November 2019 в 23:33
поделиться
<IfModule rewrite_module>
RewriteEngine on
RewriteBase /

# Removes the "/" at the end
RewriteRule (.+)/$ /$1 [L,R]

RewriteCond $1 !^(index\.php|dhtml|img|css|js|favicon\.ico|robots\.txt)
RewriteRule ^([^?&]+) /index.php/$1 [L]
</IfModule>
0
ответ дан 29 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: