我的网站文件夹中列出了五个目录,它们充当我本地服务器上的网站。其中一个站点使用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
答案 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 等网址。要做到这一点,你必须做两件事。
虽然我使用的是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
例如:
之后转到XAMPP
已安装的位置
对我而言:E:\xampp
。然后转到其中的文件夹apache\conf\extra
。找到名为httpd-vhosts.conf
(E:\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>
例如:
保存文件并重新启动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)