我将这个.htaccess放在我的根文件夹中:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule   (.*) public/$1    [L]
 </IfModule>

它将导致500内部服务器错误,没有任何解释。

如果我删除了偏瘫,它将起作用:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule   .* public/$1    [L]
 </IfModule>

为什么? 此处的肢体不适不是中立的吗?

我正在使用最新的XAMPP版本(Windows)。

===============>>#1 票数:1

正则表达式组用圆括号括起来,在这种情况下,表达式.*匹配所有内容,因此始终使用该规则。

使用括号中的表达式,该规则映射到public/WhateverIsInsideParenthesis ,因为$1是对组1 (.*)的后向引用。 在这种情况下唯一的。

没有括号,该规则仅映射到public/ ,因为没有组。 括号内什么也没有。

您没有提供该请求的示例,而是提供了以下信息:

http://example.com/folder1/folder2/script1/ ,括号内的URI路径为folder1/folder2/script1/ ,替换网址为:

http://example.com/public/folder1/folder2/script1/

因此,在这种情况下,有或没有括号的原因都有很多。 规则映射到的请求,循环等都可能产生该错误。 500 Internal Server Error是用于发生所有错误的常规HTTP status code

===============>>#2 票数:0

如果输入起始字符^会怎样?

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule   ^(.*) public/$1    [L]
</IfModule>

===============>>#3 票数:0

是的,该模式的括号是中性的。

但是,当您在替换中将捕获的字符串用作$1时,它们会有所不同。 那么该规则等同于

RewriteRule (.*) public/$1

要么

RewriteRule .* public/

当您省略括号并用$0替换$1

RewriteRule .* public/$0

那么您将再次遇到相同的错误,这次没有括号。

  ask by Tool translate from so

未解决问题?本站智能推荐:

3回复

URL RewriteRule

我试图重写我的网址,我在htaccess中有以下内容,其中pageid是每个页面的mysql id,标题是页面标题。 基于此规则的当前URL结构为: http : //domian.com/3/Contact.html 并希望将其更改为: http : //domian.com/C
1回复

RewriteRule表现奇怪

我想要这样的URL: localhost/dir/images/pic1.jpg 重写为: localhost/dir/subdir/index.php?folder=images&picture=pic1.jpg 所以我把非常简单的.htaccess文件放在localhos
2回复

RewriteRule .htaccess无效

我面临mod_rewrite ^(.+)$ /article.php?pname=$1 [L,QSA]问题mod_rewrite ^(.+)$ /article.php?pname=$1 [L,QSA]工作正常,但之后其他RewriteRule不工作我不知道为什么...这里是我的代码 如
1回复

.htaccess目录的RewriteRule

我想将RewriteRule用于以下内容 ==>应该转到www.mysite.com/page.php?var=xyz ==>不应重写 仅当没有文件扩展名时,才应使用重写规则。谢谢!
1回复

htaccess RewriteRule问题

我正在为网站进行SEO,并想更正Google网站站长工具提供的一些“未找到” URL。 因此,我开始在.htaccess文件中进行操作。 应该 和 应该 和 应该 和 应该 和 应该 和 应该
1回复

RewriteRule原因变慢

我在网站上添加了RewriteRule 我的网站有自己的路由。 样品 相当于 我试图缩短网址到 下面的代码 如我所知。 此代码使网站加载速度变慢。 或CSS和javascript无法正常工作。 并且原始链接不起作用 但是当我使用这个时
1回复

多个RewriteRule被忽略

我正在尝试向当前的.htaccess中添加另一个RewriteRule ,这是.htaccess当前的显示方式 然后,我尝试在RewriteRule .* index.php之前添加以下内容,但仍然被完全忽略
1回复

RewriteRule匹配任何东西

我正在创建一个函数来报告网站上发生的所有404错误,因此我可以重定向任何需要做的事情,而且还要记录用户之前的位置(如果可能)。 某些URL确实很长很奇怪,例如 news/read/gbbasketball+++++++++++++++Result:+chosen+nickname+%22h
1回复

Htaccess rewriterule / a to / a / b

我尝试从目录/a/到子文件夹/a/b/准备重写规则,但我收到的信息是我的重写规则是循环的,所以我收到的output URL为localhost/a/b/a/b/a/a/b为了请求localhost / a /。 我想收到: 我尝试:
1回复

RewriteRule弄乱了子域

我有一个名为login的子域,该文件夹中有一个文件index.php (该文件夹位于我的文档根目录中)。 .htaccess文件也位于文档根目录中,其内容如下: 当我转到http://login.example.com/ ,最终出现在前面提到的错误页面上。 但是,如果我浏览至http