Regex 重写模块,无法匹配点字符?

Regex 重写模块,无法匹配点字符?,regex,apache,mod-rewrite,Regex,Apache,Mod Rewrite,我有一个使用Apache重写模块的站点。问题是我使用的重写规则如下: RewriteRule ^([^/]+)/?$ /index.php?p1=$1 [L] 我需要匹配除“/”以外的所有字符,但它不起作用。它会更正一个错误“在此服务器上找不到请求的URL” 它适用于以下规则: RewriteRule ^([^/\.]+)/?$ /index.php?p1=$1 [L] 但这条规则与“点”不匹配,因此每当url有“点”时,它都会与上面的相同 请帮忙 RewriteRule ^([^/]+)/

我有一个使用Apache重写模块的站点。问题是我使用的重写规则如下:

RewriteRule ^([^/]+)/?$ /index.php?p1=$1 [L]
我需要匹配除“/”以外的所有字符,但它不起作用。它会更正一个错误“在此服务器上找不到请求的URL”

它适用于以下规则:

RewriteRule ^([^/\.]+)/?$ /index.php?p1=$1 [L]
但这条规则与“点”不匹配,因此每当url有“点”时,它都会与上面的相同

请帮忙

RewriteRule ^([^/]+)/?$ /index.php?p1=$1 [L]
不起作用的原因是因为存在一个内部重定向循环,假设您收到一个请求
/zoo

  • zoo
    (此处无前导斜杠)匹配
    ^([^/]+)/?$
    ,url被重写为
    /index.php?p1=zoo
  • zoo
    /index.php
    是不同的,因此它会在内部被重定向,并再次应用规则,导致斜杠被删除
  • index.php
    匹配
    ^([^/]+)/?$
    ,被重写为
    /index.php?p1=index.php
  • index.php
    /index.php
    是不同的,所以再次进行内部重定向
  • 重复3和4
  • 停止循环的一种方法是将规则更改为:

    RewriteRule ^([^/]+)/?$ index.php?p1=$1 [L]
    
    因此,
    index.php
    将匹配
    index.php
    (无前导斜杠),但更好的方法是添加一些重写条件:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    在重写规则前面

    不起作用的原因是因为存在一个内部重定向循环,假设您收到一个请求
    /zoo

  • zoo
    (此处无前导斜杠)匹配
    ^([^/]+)/?$
    ,url被重写为
    /index.php?p1=zoo
  • zoo
    /index.php
    是不同的,因此它会在内部被重定向,并再次应用规则,导致斜杠被删除
  • index.php
    匹配
    ^([^/]+)/?$
    ,被重写为
    /index.php?p1=index.php
  • index.php
    /index.php
    是不同的,所以再次进行内部重定向
  • 重复3和4
  • 停止循环的一种方法是将规则更改为:

    RewriteRule ^([^/]+)/?$ index.php?p1=$1 [L]
    
    因此,
    index.php
    将匹配
    index.php
    (无前导斜杠),但更好的方法是添加一些重写条件:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    

    在重写规则前面。

    是!!它可以工作,但在加载css或javascript文件时仍然存在错误。它加载的是主页而不是文件。你的css/js文件在哪里?它们是用相对链接链接的吗?我的css看起来是这样的
    这有什么问题吗?应该没问题,它们不应该被重写,也许可以尝试将其添加到重写条件的顶部<代码>重写条件%{REQUEST\u URI}!\。(css | js)$它不起作用,有什么问题吗?似乎
    RewriteCond%{REQUEST\u FILENAME}-f
    这一行不适用于css和js文件。但它适用于图像文件
    http://example.com/uploads/profiles/p55x55/sample.png
    是!!它可以工作,但在加载css或javascript文件时仍然存在错误。它加载的是主页而不是文件。你的css/js文件在哪里?它们是用相对链接链接的吗?我的css看起来是这样的
    这有什么问题吗?应该没问题,它们不应该被重写,也许可以尝试将其添加到重写条件的顶部<代码>重写条件%{REQUEST\u URI}!\。(css | js)$它不起作用,有什么问题吗?似乎
    RewriteCond%{REQUEST\u FILENAME}-f
    这一行不适用于css和js文件。但它适用于图像文件
    http://example.com/uploads/profiles/p55x55/sample.png