我上传了.htaccess到服务器,并收到错误500(内部服务器错误) 。 并在错误日志中,我有以下错误: … /。htaccess:这里不允许RewriteEngine 但mod_rewrite.so已启用。 所以,我需要改变 <Directory /> Options FollowSymLinks AllowOverride None </Directory> 至 <Directory /> Options FollowSymLinks AllowOverride All </Directory> 在/etc/httpd/conf/httpd.conf文件中? 或者它可能是别的东西? .htaccess文件应该没问题,因为它在我的本地主机上工作得很好。 我只是不想拧任何东西了。 这是我的.htaccess文件的一部分: Options All -Indexes Options +FollowSymLinks RewriteEngine On
如果我理解正确,我需要在php.ini中启用mod_rewrite。 如果这是真的,我需要在php.ini放置什么?
我有一台运行Apache的Linux主机和一台运行IIS的Windows主机。 我有一个域指向Linux主机,并需要中继(代理)对IIS的请求; 因此,我在Apache中具有以下虚拟主机定义(工作得很好): <VirtualHost 192.168.0.2:80> ServerName www.acme.com DocumentRoot /var/www/acme.com RewriteEngine On RewriteOptions Inherit RewriteRule ^/(.*) http://win.acme.com/$1 [P] </VirtualHost> 现在我想添加SSL支持; 定义变成: <VirtualHost 192.168.0.2:443> ServerName www.acme.com DocumentRoot /var/www/acme.com GnuTLSEnable On GnuTLSPriorities NORMAL:%COMPAT GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt GnuTLSKeyFile /var/www/ssl/www.acme.com.key RewriteEngine On RewriteOptions Inherit RewriteRule ^/(.*) https://win.acme.com/$1 [P] </VirtualHost> 我有两个Web服务器上有效和可信的证书,如果我访问https://win.acme.com一切都很好,但是,当我访问https://www.acme.com我得到一个500内部服务器错误消息。 查看错误日志显示: [Wed Jul 20 08:35:34 2011] [error] [client 76.168.166.70]请求SSL代理www.wileybits.com:80但未启用[提示:SSLProxyEngine] [Wed Jul […]
我似乎无法强制https在弹性beanstalk的免费使用层。 我已经尝试了如何强制https在亚马逊弹性beanstalk没有失败健康检查以下build议 使用这个Apache重写规则 RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{REQUEST_URI} !^/status$ RewriteCond %{REQUEST_URI} !^/version$ RewriteCond %{REQUEST_URI} !^/_hostmanager/ RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 当我尝试,http请求不会被redirect到https,因为我想。 相反,http页面正常加载。 我也试着用相同的结果使用X-Forwarded-Port头。 我也尝试了以下重写规则 RewriteCond %{SERVER_PORT} 80 RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 而这个规则会导致redirect循环。 所以看起来,Apache重写规则不拾起Elastic Load Balancer头X-Forwarded-Port和X-Forwarded-Proto,但redirect循环也不是我所要做的。 请帮忙。 我是AWS的新手,Elastic Beanstalk,并不熟悉Apache规则。 我不太确定该从哪里出发。 谢谢。
我已经将我的.htaccess文件推送到生产服务器,但它们不起作用。 重新启动会是下一步,还是应该检查别的东西。
这是如何使用AND,或者在Apache上的RewriteCond ? rewritecond A [or] rewritecond B rewritecond C [or] rewritecond D RewriteRule … something if ( (A or B) and (C or D) ) rewrite_it 。 所以看起来“OR”的优先级高于“AND”? 有没有一种方法可以像(A or B) and (C or D)语法一样轻松地进行分析?
这会将domain.com更改为www.domain.com : # Force the "www." RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] 如何replace“域”部分,以便这可以在任何域上运行?
我有一个.htaccess文件中的RewriteRule没有做任何事情。 我如何解决这个问题? 我如何validation.htaccess文件是否被Apache读取和遵守? 我可以写一个回应“它正在工作”的消息,如果我写它,那条线会在哪里回应? 如果.htaccess文件没有被使用,我怎样才能让Apache使用它? 如果正在使用.htaccess ,但我的RewriteRule仍然没有效果,我还能做些什么来debugging?
我在.htaccess文件中有8行重写规则。 我需要从这些规则中排除服务器上的两个物理目录,以便它们可以被访问。 现在所有请求都发送到index.php文件。 目录排除:“pipe理员”和“用户”。 所以http请求:http: //www.domain.com/admin/不应该传递给index.php文件。 ErrorDocument 404 /index.php?mod=error404 Options FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L] RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]
有没有办法将RewriteBase设置为相对于主机根的path当前文件夹(.htaccess文件所在的文件夹)? 我有一个CMS,如果我把它移动到我的主机中的目录,它不工作,除非我把RewriteBase设置为相对于主机根目录的path。 我希望我的CMS只能复制和粘贴,而不需要在htaccess中更改任何代码。 更新: 例如: webroot – sub_directory – cms – .htaccess 在这种情况下,我应该写在htaccess: RwriteBase / 如果我移动子目录内的htaccess我应该改变RwriteBase为: RewriteBase /sub_directory/ 所以我想要类似的东西 RewriteBase /%{current_folder}/