Localhost和htaccess

时间:2014-05-23 22:05:30

标签: php .htaccess codeigniter

我的网站文件夹中列出了五个目录,它们充当我本地服务器上的网站。其中一个站点使用codeigniter进行编码。我违反了自然文件结构,并将应用程序和系统文件夹移到了站点文档根目录之外。我目前有一个index.php文件需要运行驻留在public_html中的应用程序,以便在准备好测试时轻松转移到我的实时站点。当我在我的本地服务器上时,如何删除URL的所有额外部分。

现在我把它显示为:

本地主机/网站名称/的public_html /控制器

我更喜欢这个网站的设置,以便当我在浏览器中打开它时,它会显示如下:

dev.mysite.com/controller。

众所周知,public_html只是一个文件夹。

我在htaccess做什么事?

更新:

在我的Mac上,我有一个站点文件夹,它包含我本地服务器上的所有站点。

- Sites
    -site1
        -application
        -public_hml
            index.php
            .htaccess
        -system
    -site2
        -application
        -public_html
            index.php
            .htaccess
        -system

我现在已经在mamp中设置了apache,其中site是文档根目录。这是我应该做的。

当我想加载页面的索引文件时,它显示为:

localhost/site1/public_html/index.php

显然,如果我要将其上传到实时服务器,我所要做的就是转到以下链接,它会起作用。在上传到实时服务器之前,我只是尝试在本地开发。

sitesname.com/index.php

5 个答案:

答案 0 :(得分:4)

我相信我过去曾这样做过。从 public_html 文件夹中移动应用程序系统文件夹是最佳做法。它将阻止这两个文件夹公开直接访问。移动文件夹后,您必须在 public_html \ index.php 文件中进行更改。将系统和应用程序路径指向一级。请参考下面的图片,看看我是如何编辑的。

http://i.stack.imgur.com/ekQKi.jpg

执行上述编辑后,现在您的应用程序将正常工作,但您必须在URI中包含 index.php 段。例如: - localhost / index.php / welcome 。要摆脱这种情况,您必须在 public_html 文件夹中创建 .htaccess 文件。请参考下面的图片。

http://i.stack.imgur.com/meF6Z.jpg

现在为了您的方便,我附上了下面的重写代码。

<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine on

# Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule> 

希望您的网站无法在URI中包含index.php,例如 localhost / welcome

  
    

当我想加载页面的索引文件时,它显示为:     的本地主机/ SITE1 /的public_html / index.php的 的     显然,如果我要将其上传到实时服务器,我所要做的就是转到&gt;&gt; 以下链接,它会起作用。在上传到实时服务器之前,我只是尝试在本地开发。     的 sitesname.com/index.php

  

请注意,在您的实时服务器上,域名sitename.com也指向本地目录结构,如 localhost / site1 / public_html / 。您也可以在本地主机中实现相同的功能。例如,您可以将开发网站设置为 yoursite.dev/index.php 等网址。要做到这一点,你必须做两件事。

  1. 在本地Apache服务器中创建一个站点(将其命名为yoursite.dev)
  2. 编辑主机文件以解析yoursite.dev
  3. 虽然我使用的是ubuntu机器来演示配置,但我相信你也可以在Mac上找到它

    在Apache中创建网站

    sudo nano -w /etc/apache2/sites-available/yoursite.conf
    

    将以下内容粘贴到文件中并进行必要的更改

    <VirtualHost *:80>
        ServerName yoursite.dev
        ServerAlias *.yoursite.dev
        DocumentRoot /path/to/public_html/folder
    
    <Directory />
        #Options FollowSymLinks
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
    
    </VirtualHost>
    

    保存文件。现在您已经创建了配置文件,需要启用该站点。

    sudo a2ensite sandbox
    service apache2 restart
    

    编辑主机文件以解析yoursite.dev

    sudo nano -w /etc/hosts
    

    将以下行添加到最后并保存文件

    127.0.0.1       yoursite.dev
    

    如果您跟着我,现在您可以使用以下网址访问您的开发网站: yoursite.dev/index.php

    我希望这会对您有所帮助,如果您有任何疑问,请告诉我。

答案 1 :(得分:3)

我在 WINDOWS

上的 XAMPP 工作

转到C:\Windows\System32\drivers\etc\,然后在文本编辑器中打开名为hosts的文件。然后在文件末尾添加这些行

127.0.0.1 sitesname.com sitesname2.com sitesname3.com 

例如:hosts file content

之后转到XAMPP已安装的位置

对我而言:E:\xampp。然后转到其中的文件夹apache\conf\extra。找到名为httpd-vhosts.confE:\xampp\apache\conf\extra\httpd-vhosts.conf

的文件

然后添加

<VirtualHost *>
    DocumentRoot "E:\xampp\htdocs\Sites\site1"
    ServerName sitesname.com
<Directory "E:\xampp\htdocs">
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *>
    DocumentRoot "E:\xampp\htdocs\Sites\site2"
    ServerName sitesname2.com
<Directory "E:\xampp\htdocs">
    Order allow,deny
    Allow from all
</Directory>

例如:vertual host setup

保存文件并重新启动Apache服务器并检查 sitesname.com

它对我有用。

注意:有时在Apache无法访问E:\xampp\htdocs\以外的文件夹

答案 2 :(得分:2)

您需要在路线中更改

[yournameyouwant] =“控制器/索引”;

[yournameyouwant] =“folder / controller / index”;

以下是我使用的一些htaccess

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

或者

<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>

答案 3 :(得分:1)

您可能会在C:\ Windows \ System32 \ drivers \ etc \。

中看到主机文件

使用编辑器,您必须添加以下代码:

127.0.0.1  local.site1.com
127.0.0.1  local.site2.com

之后,您必须在C:\ xampp \ apache \ conf \ extra \ httpd-vhosts.conf中添加此内容

<VirtualHost *>
    DocumentRoot "C:\xampp\htdocs\Sites\site1"
    ServerName local.site1.com
</VirtualHost>
<VirtualHost *>
    DocumentRoot "C:\xampp\htdocs\Sites\site1"
    ServerName local.site2.com
</VirtualHost>

然后,重启xampp。 您需要编辑每个站点的.htaccess文件。

RewriteEngine on
RewriteBase /site1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

RewriteEngine on
RewriteBase /site2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

完成

答案 4 :(得分:0)

  • 在apache中设置连接到本地文件夹的虚拟主机(my.local.dev)。
  • 将您的操作系统添加到您的主机文件中,以使用http://my.local.dev
  • (重启apache)
  • 仍然失败? htaccess在您的公共HTML或更改codeigniter路由