GVKun编程网logo

我的RewriteRule通过.htaccess出了什么问题? (为什么需要RewriteBase?)(rewrite选项)

24

以上就是给各位分享我的RewriteRule通过.htaccess出了什么问题?,其中也会对为什么需要RewriteBase?进行解释,同时本文还将给你拓展.htaccessRewriteRule提供

以上就是给各位分享我的RewriteRule通过.htaccess出了什么问题? ,其中也会对为什么需要RewriteBase?进行解释,同时本文还将给你拓展.htaccess RewriteRule 提供正确的链接,但也提供 404、.htaccess RewriteRule保留GET URL参数、.htaccess RewriteRule添加到URL的驱动器path、.htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

我的RewriteRule通过.htaccess出了什么问题? (为什么需要RewriteBase?)(rewrite选项)

我的RewriteRule通过.htaccess出了什么问题? (为什么需要RewriteBase?)(rewrite选项)

rewriteengine on rewriterule ^/a/b$ ^/c$

不工作,但是

rewriteengine on rewritebase / rewriterule ^a/b$ ^c$

作品。

将非WWWredirect到WWW URL

允许在Content Security Policy(CSP)中通过$ .getscript()插入file.js

.htaccess图像URL的RewriteRule

htaccess外部重写/内部redirect

如何用.htaccess删除部分URl?

这可能不是RewriteBase使得规则工作的主要斜线。 此外,RewriteRule的第二个参数不是正则表达式。 相反,请尝试:

RewriteRule ^/?a/b$ c

从.htaccess应用RewriteRule时,前导斜杠将从URL中删除,如果包含它,会导致该模式失败。 通过以“^ /?”开始模式,它将在主要配置文件和每个目录的配置文件中工作。

阅读详细的mod_rewrite文档 ,了解重写引擎的工作原理和RewriteBase的重要性。

编辑:正如在mod_rewrite技术细节中所述,并在RewriteRule和RewriteBase的文档中描述的,在每个目录重写规则被评估的时候,URL已经被转换为路径。 重写引擎不再具有可用的URL。 相反,它将删除本地目录前缀(保存.htaccess文件的目录),该目录以斜线结尾。 例如,假设访问者请求“/var/www/foo/bar/baz.html”,并在“/var/www/foo/.htaccess”中设置了重写规则。 在每条规则前面,重写引擎会去掉“/ var / www / foo /”,留下“bar / baz.html”与重写规则匹配。 在处理规则之后,本地目录前缀被前置(除非替换以“http://”开头)。 所有重写规则处理完毕后,重写基地(如果设置)替换本地目录前缀; 如果不是,则剥离文档根目录。 重写的URL然后被重新注入为一个子请求。

你使用的是什么版本的Apache? 当你从根重写时, RewriteBase不是必须的。 如果你不是,你可能需要它。 例如,我的一个博客的一部分当前配置(Apache 2.2)如下所示,并且工作如下:

RewriteEngine On RewriteRule ^/$ /blog/ [R] RewriteRule ^/wordpress/(.*) /blog/$1 [R]

总结

以上是小编为你收集整理的我的RewriteRule通过.htaccess出了什么问题? (为什么需要RewriteBase?)全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

.htaccess RewriteRule 提供正确的链接,但也提供 404

.htaccess RewriteRule 提供正确的链接,但也提供 404

根据您展示的样品,您可以尝试以下操作吗?公平的警告我已经在移动设备上写了这个,所以还没有测试它应该可以工作恕我直言也会在某个时候测试它。此外,由于您提到可能有多个域,所以我特意在此处添加了一个条件来检查它是否是 example.nl,以防您想重写对任何域的请求,那么我们也可以省略该条件。

RewriteEngine ON
RewriteCond %{HTTP_HOST} ^example\.nl$ [NC]
RewriteRule ^([a-zA-Z]+)/?$ %{HTTP_HOST}/_sites/$1 [L]

注意:如果您的目录/文件夹不一定以字母开头并且可以是任何内容,则将上面的正则表达式从 ^([a-zA-Z]+)/?$ 更改为 ^([.*])/?$

,

无需硬编码主机名,您可以在站点根目录 .htaccess 中尝试以下规则:

RewriteCond %{HTTP_HOST}::%{THE_REQUEST} ^(?:www\.)?([^:]+)::GET\s/+\1/_sites/(\S*)\s [NC]
RewriteRule ^ /%2 [R=301,NE,L]

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^[^/]+/?$ %1/_sites%{REQUEST_URI} [L]

.htaccess RewriteRule保留GET URL参数

.htaccess RewriteRule保留GET URL参数

htaccess url重写后,保持URL的参数正常工作时出现问题。

我的htaccess重写如下:

 RewriteEngine on RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2

意思是:

domain.com/index.php?lang=en&page=product 显示为 domain.com/en/product

出于某种原因,当我?model=AB123&color=something在URL的末尾添加a
$_GET[''model'']$_GET[''color'']即使显示的URL中存在这些参数,也无法使用php检索这些参数。

为什么不传递变量?

答案1

小编典典

您需要附加[QSA](查询字符串附加)标签。尝试

RewriteEngine onRewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [QSA]

参见http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

.htaccess RewriteRule添加到URL的驱动器path

.htaccess RewriteRule添加到URL的驱动器path

我使用安装在Win7机器上的C:上的Zend Server CE(v.5.1.0)。 我添加了一个项目到httpd.conf :

Alias /project "D:Homepagesproject" <Directory "D:Homepagesproject"> Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all </Directory>

项目目录中的.htaccess文件包含以下内容:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_URI} ^/w*.(css|js) [NC] RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.PHP [NC,L]

现在来解决这个问题。 如果我去

HTTP://localhost/project/index.PHP

重写浏览器的位置栏中显示的规则

重写URL的Glype(Nginx)

设置x-frame-options来允许和禁止某些URL来构build一个页面

需要htaccessredirect

从https转换到http时,RewriteRule违反

一切似乎工作正常。 我到达index.PHP文件并得到我的内容。 但是,如果我去任何其他页面,将触发RewriteRule,似乎是添加目录path。 FireFox输出以下Not Found消息:

在此服务器上找不到请求的URL /Homepages/project/index.PHP。

我试图在这里find类似的问题/答案,但失败了。 任何想法? PS。 我接受一个答案可能会延迟,因为我会出差一段时间。

将URL重写为index.PHP,但避免在URL中使用index.PHP

.htaccess – RewriteCond:坏标志分隔符

使用Apacheconfiguration为每个站点指定PHP包含目录

如何处理自定义url模式的重写?

easyPHP .htaccess规则

让你的最后一行是这样的:

RewriteRule ^.*$ /index.PHP [NC,L]

但是我认为这是无限循环,所以我会建议这个规则:

RewriteCond %{THE_REQUEST} !s/index.PHP [NC] RewriteCond %{REQUEST_URI} !^/index.PHP [NC] RewriteRule . /index.PHP [L]

如果它已经是/index.PHP,则防止进入index.PHP。

您需要设置RewriteBase指令; 否则,会自动mod_rewrite,并且默认情况下会将文件路径预加重到生成的重写规则。

来自: http : //httpd.apache.org/docs/2.0/mod/mod_rewrite.html

当一个新的URL发生替换时,这个模块必须重新将这个URL注入到服务器处理中。 为了能够做到这一点,它需要知道相应的URL前缀或URL基础是什么。 默认情况下,这个前缀是相应的文件路径本身。 但是,对于大多数网站来说,URL并不直接与物理文件名路径相关,所以这个假设通常是错误的! 因此,您可以使用RewriteBase指令来指定正确的URL前缀。 如果您的网络服务器的URL与物理文件路径没有直接关系,那么您将需要在每个要使用RewriteRule指令的.htaccess文件中使用RewriteBase。

总结

以上是小编为你收集整理的.htaccess RewriteRule添加到URL的驱动器path全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

.htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符

.htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符

1、利用 .htaccess 防止盗链

如果不喜欢别人在他们的网页上链接自己的图片、文档的话,也可以通过htaccess的指令来做到。当然这样也可以对你的网站服务器压力变小!

这次先给出‘代码’,然后进行详细的讲解!这个东西纠结了我很久啊,既然自己懂一些,就拿出来和大家一起分享一下,可能有些地方理解错误了,希望发现不对的‘童鞋’能指出,共同进步!

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [OR,NC]
RewriteCond %{HTTP_REFERER} !^http://网站的域名/.*$ [OR,NC]
#当然这里你还可以加很多 RewriteCond
RewriteRule .*\.(gif|GIF|jpg|JPG)$ http://mysite/images/bad.gif [L,R]

先简单介绍一下这个的功能:直接输入图片url、本地localhost、以‘http://网站域名/’ 开头,后面接任何字符任意多个,链接到当前页面的前一页面的url,将不执行 RewriteRule 重写规则。

说起来比较拗口,给个实际的例子吧!

RewriteCond %{HTTP_REFERER} !.*thobian.info/.* [NC]
RewriteRule  .*\.(gif|jpg|png)$ http://thobianinfo/images/logo.jpg [L]

解释:%{HTTP_REFERER}=$_SERVER[''HTTP_REFERER''] 读取到的值,如果%{HTTP_REFERER}中不包括 thobian.info/ 、并且%{HTTP_REFERER}是以:.gif或者.jpg或者.png结束,就跳转到http://thobianinfo/images/logo.jpg 这个地址。

2、RewriteCond、RewriteRule规则详细解释

Rewrite规则表达式的说明:(先要清楚rewritecond和rewriterule 是rewrite模块里面的)

. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志
反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N >= 9)

RewriteCond标志符

''nocase|NC''(no case)忽略大小
''ornext|OR'' (or next condition)逻辑或,可以同时匹配多个RewriteCond条件

RewriteRule适用的标志符

''redirect|R [=code]'' (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
''forbidden|F'' (force URL to be forbidden)重写为禁止访问
''proxy|P'' (force proxy)重写为通过代理访问的http路径
''last|L'' (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
''next|N'' (next round)循环同一个规则,直到不能满足匹配
''chain|C'' (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
''type|T=MIME-type'' (force MIME type)指定MIME类型
''nosubreq|NS'' (used only if no internal sub-request)如果是内部子请求则跳过
''nocase|NC'' (no case)忽略大小
''qsappend|QSA'' (query string append)附加查询字符串
''noescape|NE'' (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
''passthrough|PT'' (pass through to next handler)将重写结果运用于mod_alias
''skip|S=num'' (skip next rule(s))跳过下面几个规则
''env|E=VAR:VAL'' (set environment variable)添加环境变量

后续将推出 rewritecond 和rewriterule 编写规则!


今天的关于我的RewriteRule通过.htaccess出了什么问题? 为什么需要RewriteBase?的分享已经结束,谢谢您的关注,如果想了解更多关于.htaccess RewriteRule 提供正确的链接,但也提供 404、.htaccess RewriteRule保留GET URL参数、.htaccess RewriteRule添加到URL的驱动器path、.htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符的相关知识,请在本站进行查询。

本文标签: