Questions tagged «mod-rewrite»

Apache Web服务器的URL重写模块。它通常用于所谓的“漂亮” URL,但也提供了执行各种请求处理任务的能力和灵活性,而不仅仅是简单的替换。

8
mod_rewrite的隐藏功能
mod_rewrite最近似乎有很多线程在浮动,对其某些方面的工作方式有些困惑。结果,我编写了一些有关通用功能的注释,也许还有一些令人讨厌的细微差别。 您还遇到了哪些其他功能/常见问题mod_rewrite?


8
如何调试.htaccess RewriteRule不起作用
我RewriteRule的.htaccess文件中没有任何操作。我该如何解决? 如何验证.htaccessApache是​​否正在读取并遵守文件?我是否可以写回显“正在运行”消息,如果确实将其写回,那条线会在哪里回显? 如果该.htaccess文件没有被使用,如何使Apache使用它? 如果.htaccess正在使用,但RewriteRule仍然没有效果,我还能做些什么来调试?

2
如何在Apache的RewriteCond中使用“ AND”,“ OR”?
这是RewriteCond在Apache上使用AND和OR的方法吗? 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)语法中那样容易分辨的方法 ?

17
如何检查是否在服务器上启用了mod_rewrite?
目前,我正在将主机与lightspeed服务器一起使用。托管说mod_rewrite已启用,但我无法在那里运行脚本。每当我尝试访问URL时,它都会返回404-找不到页面。 我将相同的代码放在另一台运行Apache的服务器上。它在那边工作。所以我想这是.htaccess和mod_rewrite问题。 但是托管支持仍然坚持要求我启用他们的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> 我也这样尝试过 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] 但结果相同。



10
.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] 但是,当我删除Header并将它们添加进来时,index.php一切正常。 header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); header("Access-Control-Allow-Headers: *"); 我想念什么?

28
在Laravel 5+ Ubuntu 14.04上出现500个内部服务器错误
我已经在Windows OS上安装了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] 我也有Laravel 5+所需的所有必要扩展。还有我没做的事吗?

4
htaccess:从URL添加/删除尾部斜杠
我的网站运行的脚本名为-> WSS壁纸脚本 我的问题->我一直在尝试强制删除或在URL的末尾添加斜杠,以防止重复的内容并清理URL。 我尝试了各种尝试,尝试了所有可以想到的东西,并尝试从Interweb进行加载,但是还没有运气!这可能是一个快速修复,但是我已经看了太多了,以至于我可能看不到某些显而易见的东西。 因此,我向您提供所有.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 …

21
如何在弹性beantalk上强制使用https?
我似乎无法在弹性beantalk的免费使用层上强制使用https。 我在如何通过Amazon Elastic beantalk上强制https而不失败健康检查中尝试了以下建议 使用此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请求不会像我希望的那样被重定向到https。而是,http页面正常加载。我也尝试过使用具有相同结果的X-Forwarded-Port标头。 我也尝试了以下重写规则 RewriteCond %{SERVER_PORT} 80 RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 并且此规则导致重定向循环。因此,似乎apache重写规则没有选择Elastic Load Balancer标头X-Forwarded-Port和X-Forwarded-Proto,但是重定向循环也不是我想要的。 请帮忙。我是AWS,Elastic Beanstalk的新手,并且对Apache规则不太熟悉。我不太确定从这里去哪里。谢谢。

11
如何忽略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 如何使modrewrite完全忽略/vip/目录,以便所有请求都直接传递到文件夹? 更新: 明确点: 它托管在Dreamhost上 文件夹在wordpress目录中 / vip /文件夹包含一个webdav .htaccess等(尽管我不认为这很重要

3
在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}]

6
禁止您无权访问此服务器上的/
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我今天要做的就是将重定向规则写入子文件夹,例如:输入URL:example.com,然后将您重定向到example.com/subfolder 这样简单的愿望。我试图在互联网上找到解决方案。互联网告诉我要在htdocs根目录中添加一个.htaccess文件,其内容如下: RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule (.*) http://www.example.com/$1 [R=301,L] RewriteRule ^$ subfolder [L] 我做到了 但是显然没有成功,他们没有告诉我我必须取消注释httpd.conf中的模块: LoadModule rewrite_module modules/mod_rewrite.so 所以我也这样做了。再没有成功。他们没有告诉我我必须更改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 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.