为什么当AllowOverride All时Apache出错
AllowOverride从字面上解释是允许覆盖的意思,即Apache允许另一配置文件覆盖现有配置文件。我们通常利用Apache的rewrite模块对URL进行重写,rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。
从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即:
AllowOverride None
在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。
更多相关知识可参考:https://panxu.net/article/8410.html
如何添加Apache服务器用户验证AllowOverride AuthConfig
apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证。
通常分为以下三步:
1、在apache的配置文件httpd.conf中声明要进行验证的目录
2、在要进行验证的目录中创建.htaccess文件,在此文件中指明用于验证的文件存放的位置
3、根据.htaccess指明的位置,用apache自带的htpasswd命令创建用于验证的文件
步骤说明:
假设要对/home/ddd这个目录进行访问控制。(这个目录不在APACHE的主目录中,因此要用alias 添加为虚拟目录)
1、在apache的配置文件httpd.conf中声明要进行验证的目录
编辑httpd.conf
LoadModule auth_module modules/mod_auth.so #需要加载此模块进行认证
Alias /test "/home/ddd" #添加为虚拟目录
Options Indexes MultiViews
AllowOverride All #允许用.htaccess文件中指定的验证文件进行身份验证
Order allow,deny
Allow from all
#AllowOverride all 表示进行身份验证 这是关键的设置
此外,也可用AllowOverride AuthConfig
实例:
ServerName test.xxx.com
ServerAlias xxx.com 123.123.123.123
DocumentRoot /data/ddd/
Options Indexes FollowSymlinks MultiViews
AllowOverride All
ErrorLog /error.log
2、在要进行验证的目录中创建.htaccess文件,在此文件中指明用于验证的文件存放的位置
在/home/ddd下创建.htaccess文件
vi /home/ddd/.htaccess,内容如下:
AuthName "请输入用户名及口令"
AuthType Basic
AuthUserFile /home/.htpasswd
require valid-user
#AuthName 描述,出现在验证对话框标题栏中
#AuthUserFile /home/.htpasswd (指定验证文件存放于/home中,文件名为.htpasswd,此文件具有隐含属性,其中包括允许访问的用户名及密码。
#require valid-user 使用验证文件中的有效用户进行验证
也可使用 require user 来指定特定用户进行验证
#密码文件推荐取名为.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一些。
3、根据.htaccess指明的位置,用apache自带的htpasswd命令创建用于验证的文件
由于已经在第2步中指定验证文件为/home/.htpasswd文件,所以下面创建这个文件
htpasswd -c /home/.htpasswd jp #创建.htpasswd文件,并添加用户jp,会要求输入口令
htpasswd /home/.htpasswd test #.htpasswd文件中添加第二个用户:test)
也可以不通过交互方式,直接在命令行,将口令添加到.htpasswd文件中
htpasswd -bc /home/.htpasswd jp 111 (创建.htpasswd文件,并添加用户jp,密码为111)
htpasswd -b /home/.htpasswd test 222 (.htpasswd文件中添加第二个用户:test 密码为222)
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数,因为已经有.htpasswd文件,就不用再创建了。-b表示从命令行直接获取参数值,添加到验证文件.htpasswd中
如果想修改密码,可以用如下命令:
htpasswd -m .htpasswd jp
对存放于.htpasswd文件中的用户jp进行口令更改
apache服务器如何设置域名和IP地址?
1、找到apache安装目录下,conf文件夹下的httpd.conf文件,用记事本或其他文本编辑软件打开。2、在文件中搜索”Include conf/extra/httpd-vhosts.conf“这一行,去掉前面的”#“,开启虚拟主机功能。3、找到apache安装目录下,conf/extra文件夹中的httpd-vhosts.conf文件,用记事本或其他文本编辑软件打开。4、在文件的最后,加上以下代码后保存:ServerName www.domain.comDocumentRoot D:/www/domainOptions +Indexes +Includes +FollowSymLinks +MultiViewsAllowOverride NoneOrder allow,denyAllow from all其中,80是服务器的端口,ServerName后面的是域名,DocumentRoot和Directory后面的是网站程序所在的目录。5、找到服务器的hosts文件,以Windows系统为例,在C:\windows\system32\drivers\etc目录下,用记事本或其他文本编辑软件打开。6、在hosts文件的末尾添加一行126.63.36.3 www.domain.com,并保存,重启服务后即可通过域名访问。
装了apache,怎么让其他计算机访问我的网站
修改httpd.conf的配置就可以了。
加入你的ip是192.168.0.11(这是一个局域网内网ip)
那么你修改Listen的配置为
Listen 192.168.0.11:80
然后重启apache,别人就可以用http://192.168.0.11:80访问你documentRoot配置指定的路径下的index.html了。但是这只限于和你同在一个内网的人可以。
如果你希望互联网上的人也能够访问的话,你就需要一个对外的公网ip,借助花生壳这类的软件进行一个ip动态绑定,相关的细节你可以再去搜索一下。
thinkphp中怎么把url中的index.php去掉
IIS环境如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:RewriteRule (.*)$ /index\.php\?s=$1 [I]在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:下面是Apache的配置过程,可以参考下:1、httpd.conf配置文件中加载了mod_rewrite.so模块2、AllowOverride None 将None改为 All3、确保URL_MODEL设置为24、把下面的内容保存为.htaccess文件放到入口文件的同级目录下RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]重启ApacheNginx环境在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现: location / { // …..省略部分代码 if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; }}其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。如果你的ThinkPHP安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。 location /youdomain/ { if (!-e $request_filename){ rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=$1 last; } }
如何隐藏url中的index.php
第一步:'URL_MODEL'=>'2',
第二步:根路径下建立一个.htaccess,可以通过一些软件比如EditPlus去另存为,windows可能不能直接创建
第三步:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
放到.htaccess中保存
第四步开启Apache rewrite 模式 去配置文件中 #LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的#,AllowOverride None改为AllowOverride All ok
当然如果你不是Apache 是IIS就不能这样配了