标签: mod-rewrite

如何检查服务器上是否启用了mod_rewrite?

目前我正在使用lightspeed服务器托管.托管说mod_rewrite已启用但我无法让我的脚本在那里工作.每当我尝试访问该URL时,它都会返回404 - 未找到的页面.

我将相同的代码放在另一台运行Apache的服务器上.它正在那里工作.所以我想,这是.htaccessmod_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)

但结果相同.

php .htaccess mod-rewrite url-rewriting lightspeed

95
推荐指数
13
解决办法
24万
查看次数

您是否必须重新启动apache才能在.htaccess生效中重写规则?

我已将.htaccess文件推送到生产服务器,但它们不起作用.重启是下一步,还是应该检查其他内容.

apache .htaccess mod-rewrite restart

94
推荐指数
3
解决办法
8万
查看次数

.htaccess中的头设置Access-Control-Allow-Origin不起作用

我无法弄清楚为什么我的.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)

我错过了什么?

.htaccess mod-rewrite rewrite cors

87
推荐指数
6
解决办法
23万
查看次数

Htaccess:从URL添加/删除尾部斜杠

我的网站运行一个名为 - > 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)

php apache .htaccess mod-rewrite

75
推荐指数
2
解决办法
16万
查看次数

如何忽略mod_rewrite中的目录?

我正在尝试让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/目录,以便所有请求直接传递到该文件夹​​?

更新:

为清楚起见:

  • 它托管在Dreamhost上
  • 这些文件夹位于wordpress目录中
  • / vip /文件夹包含webdav .htaccess等(虽然我不认为这很重要

apache mod-rewrite

73
推荐指数
7
解决办法
9万
查看次数

在Apache RewriteRule指令中设置环境变量时,是什么导致变量名称以"REDIRECT_"作为前缀?

我试图[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)

php apache mod-rewrite naming environment-variables

70
推荐指数
2
解决办法
3万
查看次数

如何在弹性豆茎上强制使用https?

我似乎无法在弹性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

68
推荐指数
5
解决办法
4万
查看次数

禁止您无权访问此服务器上的/

我今天想要做的就是将重定向规则写入子文件夹,例如:输入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.

apache .htaccess mod-rewrite httpd.conf

67
推荐指数
2
解决办法
45万
查看次数

在Laravel 5+ Ubuntu 14.04上获得500内部服务器错误

我在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+所需的所有必要扩展.还有什么东西我不做吗?

php apache ubuntu .htaccess mod-rewrite

65
推荐指数
14
解决办法
24万
查看次数

如何防止文件直接访问URL?

我正在使用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直接显示在网址栏中.

注: 我发现下面的工作方案上的每个浏览器进行测试时,除了火狐.

apache .htaccess mod-rewrite hotlinking

61
推荐指数
4
解决办法
14万
查看次数