目前我正在使用lightspeed服务器托管.托管说mod_rewrite已启用但我无法让我的脚本在那里工作.每当我尝试访问该URL时,它都会返回404 - 未找到的页面.
我将相同的代码放在另一台运行Apache的服务器上.它正在那里工作.所以我想,这是.htaccess和mod_rewrite问题.
但Hosting支持仍然坚持要求他们的mod_rewrite已启用,所以我想知道如何检查它是否实际启用.
我试着检查phpinfo(),但没有运气,我找不到mod_rewrite,是因为他们正在使用lightspeed?
有没有办法检查?请帮帮我.谢谢.
仅供参考:我的.htaccess代码是
Options -Indexes
<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我也尝试过这样
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
但结果相同.
我已将.htaccess文件推送到生产服务器,但它们不起作用.重启是下一步,还是应该检查其他内容.
我无法弄清楚为什么我的.htaccess标题设置不起作用.
我的.htaccess文件内容:
Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)
但是当我删除Header并添加它们时,index.php一切正常.
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我的网站运行一个名为 - > WSS壁纸脚本的脚本
我的问题 - >我一直在尝试强制删除或在我的URL末尾添加尾部斜杠以防止重复内容并清理我的URL.
我已经尝试了各种各样的尝试,并尝试了我能想到的一切,并从互联网上加载,但没有这样的运气!这可能是一个快速修复,但我已经看了很多,我可能对死明显的东西视而不见.
所以我告诉你我所有的.htaccess代码:
DirectoryIndex index.php
RewriteEngine on
RewriteRule ^download/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4&download=1 [L]
RewriteRule ^file/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4 [L]
RewriteRule ^preview/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+) wallpaper_preview.php?id=$1&width=$2&height=$3&name=$4 [L]
RewriteRule ^thumbnail/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/]+) image.php?wallpaper_id=$1&width=$2&height=$3&cropratio=$4&align=$5&valign=$6&file=$7 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&page=$3 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+)/([0-9a-zA-Z?-]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&sortby=$3&page=$4 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+)/([0-9a-zA-Z?-]+)-([0-9]+) index.php?task=category&id=$1&sortby=$3&page=$4 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+) index.php?task=category&id=$1&name=$2 [L]
RewriteRule ^tag/([^/\.]+)/([0-9a-zA-Z?-]+)/([0-9]+) index.php?task=tag&t=$1&sortby=$2&page=$3 [L]
RewriteRule ^tag/([^/\.]+) index.php?task=tag&t=$1 [L]
RewriteRule ^profile/([0-9]+)?/([^/\.]+) index.php?task=profile&id=$1&name=$2 [L]
RewriteRule ^profile/comments/([0-9]+)?/([^/\.]+) index.php?task=users_comments&id=$1&name=$2 [L]
RewriteRule ^page/([0-9]+) index.php?task=view_page&id=$1 [L]
RewriteRule ^register index.php?task=register [L]
RewriteRule ^lost-password index.php?task=lost_pass [L]
RewriteRule ^links index.php?task=links [L]
RewriteRule …Run Code Online (Sandbox Code Playgroud) 我正在尝试让modrewrite规则跳过目录vip.我已经尝试了很多东西,你可以在下面看到,但无济于事.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteRule ^vip$ - [PT]
RewriteRule ^vip/.$ - [PT]
#RewriteCond %{REQUEST_URI} !/vip
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)
如何让modrewrite完全忽略该/vip/目录,以便所有请求直接传递到该文件夹?
为清楚起见:
我试图[E=VAR:VAL]在.htaccess文件中使用RewriteRule规则上的标志设置Apache环境变量(用于PHP).
我已经发现变量在PHP中作为服务器变量访问$_SERVER而不是$_ENV(这有一定意义).但是,我的问题是一些规则[E=VAR:VAL]标志按预期工作,我最终得到一个变量,$_SERVER['VAR']但对于其他规则,我以变量$_SERVER['REDIRECT_VAR']或$_SERVER['REDIRECT_REDIRECT_VAR']等结束
A.什么原因导致Apache中设置的环境变量使用[E=VAR:VAL]标志通过将"REDIRECT_"添加到变量名前面来重命名?
B.我可以做些什么来确保我最终得到一个名称不变的环境变量,这样我就可以在PHP中访问它,$_SERVER['VAR']而无需检查变量名称的变体,其中有一个或多个"REDIRECT_"实例被预先添加对吗?
找到了部分解决方案.如果需要,在重写规则的开头添加以下内容将重新创建每个重定向上的原始ENV:VAR(以及在那里保留REDIRECT_VAR版本):
RewriteCond %{ENV:REDIRECT_VAR} !^$
RewriteRule .* - [E=VAR:%{ENV:REDIRECT_VAR}]
Run Code Online (Sandbox Code Playgroud) 我似乎无法在弹性beanstalk的免费使用层上强制使用https.
我在如何强制https on amazon elastic beanstalk上尝试了以下建议而不会失败健康检查
使用此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]
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,http请求不会像我想的那样被重定向到https.相反,http页面正常加载.我也尝试使用X-Forwarded-Port标头,结果相同.
我也尝试了以下重写规则
RewriteCond %{SERVER_PORT} 80
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)
此规则会导致重定向循环.因此,似乎apache重写规则不会获取Elastic Load Balancer标头X-Forwarded-Port和X-Forwarded-Proto,但重定向循环也不是我想要的.
请帮忙.我是AWS,Elastic Beanstalk的新手,并且不熟悉Apache规则.我不太确定从哪里开始.谢谢.
apache mod-rewrite https amazon-web-services amazon-elastic-beanstalk
我今天想要做的就是将重定向规则写入子文件夹,例如:输入URL:example.com,然后重定向到example.com/subfolder
这么简单的愿望.我试图在互联网上找到解决方案.互联网告诉我在htdocs root中添加一个.htaccess文件:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ subfolder [L]
Run Code Online (Sandbox Code Playgroud)
我这样做了 但是显然没有成功,他们没有告诉我我必须取消注释httpd.conf中的模块:
LoadModule rewrite_module modules/mod_rewrite.so
Run Code Online (Sandbox Code Playgroud)
所以我也这样做了.再没有成功.他们没有告诉我我必须更改我的httpd.conf以便启用.htaccess文件:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
再次没有成功,因为我在输入URL时收到此错误:
禁止您无权访问此服务器上的/.
现在我卡住了,我在互联网上找不到更多的解决方案.由于私人原因,我只是在Windows 7机器上运行Apache 2.4.
我在Windows操作系统上多次安装Laravel,但它从未发生过这种类型的问题.当您的"mod_rewrite"模块未打开时,通常会发生此500内部服务器.
但是,在Ubuntu 14.04上,这个问题让我很头疼.我已经安装了rewrite_mod但它也没有用.我已经访问了我的所有文件夹和文件,即
在/ var/www/html等/ laravel_project
它仍然无效.改变.htaccess也从原来改为此.
+FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)
我也拥有Laravel 5+所需的所有必要扩展.还有什么东西我不做吗?
我正在使用Apache,我的本地主机上有一个示例Web文件夹,例如:
http://localhost/test/
Run Code Online (Sandbox Code Playgroud)
文件test夹中的文件:
index.html
sample.jpg
.htaccess
Run Code Online (Sandbox Code Playgroud)
样本来源index.html:
<html>
<body>
<img src="sample.jpg" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我运行网站时http://localhost/test/,它只会在页面上显示图像`sample.jpg'.
问题:
http://localhost/test/sample.jpg直接显示在网址栏中.注: 我发现下面的工作方案上的每个浏览器进行测试时,除了火狐.
mod-rewrite ×10
apache ×8
.htaccess ×7
php ×4
cors ×1
hotlinking ×1
httpd.conf ×1
https ×1
lightspeed ×1
naming ×1
restart ×1
rewrite ×1
ubuntu ×1