Regex 重写模块,无法匹配点字符?
我有一个使用Apache重写模块的站点。问题是我使用的重写规则如下: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 ^([^/]+)/
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
是不同的,所以再次进行内部重定向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
是不同的,所以再次进行内部重定向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