Regex url的简单正则表达式以每种情况结束/不起作用

Regex url的简单正则表达式以每种情况结束/不起作用,regex,.htaccess,mod-rewrite,redirect,Regex,.htaccess,Mod Rewrite,Redirect,我在.htaccess文件中使用以下正则表达式 RewriteRule ^((?!blog).)*\/([A-Za-z0-9\/-]+)$ controller.php?action=nopage [qsappend,L,R=301] ^((?!blog).)*\/([A-Za-z0-9\/-]+)$ 这将使以下url重定向 www.mysite.com/my/page/ 但不是这个 你知道为什么第二个url在regex tester中都正常时没有重定向吗 按要求编辑.htaccess

我在.htaccess文件中使用以下正则表达式

RewriteRule ^((?!blog).)*\/([A-Za-z0-9\/-]+)$  controller.php?action=nopage [qsappend,L,R=301]

^((?!blog).)*\/([A-Za-z0-9\/-]+)$

这将使以下url重定向

www.mysite.com/my/page/
但不是这个

你知道为什么第二个url在regex tester中都正常时没有重定向吗

按要求编辑.htaccess文件,如有必要,我可以清理该文件:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ndd1.fr$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTP_HOST} ^ddp.com
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddp.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddp.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddp.eu
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddp.eu
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} peluche.ddp.com
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} dds.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddl.eu
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddl.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddpe.com
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddp.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ddp.eu
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.dds.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddl.eu
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddl.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddpe.com
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddp.fr
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]
RewriteCond %{HTTP_HOST} www.ddp.eu
RewriteRule ^(.*)   http://www.ddp.com/$1  [QSA,L,R=301]

RewriteRule ^liste/(.*)$ /listes.php?listeUrl=$1 [qsappend,L]

# REDIRECT BAD URL TO 404
# eg : http://www.ddp.com/page/mypage/
RewriteRule ^((?!blog).)*\/([A-Za-z0-9\/-]+)$  controller.php?action=nopage [qsappend,L]

# eg : www.ddp.com/page..   OR www.ddp.com/page..mypage
RewriteRule ^(.*\.\.).*[a-z]*$ controller.php?action=nopage [qsappend,L]

# eg : www.ddp.com/page-produit-1-to-40.html
RewriteRule ^.*(-produit-|-Produit-).*$ controller.php?action=nopage [qsappend,L]

# eg : www.ddp.com/page-moins-de-24-euro.html
RewriteRule ^.*(-moins-|-Moins-).*$ controller.php?action=nopage [qsappend,L]

RewriteRule ^.*(home-sites).*$ controller.php?action=nopage [qsappend,L]
RewriteRule ^.*(com_).*$ controller.php?action=nopage [qsappend,L]
RewriteRule ^.*(%20).*$ controller.php?action=nopage [qsappend,L]
RewriteRule ^.*(V4).*$ controller.php?action=nopage [qsappend,L]
RewriteRule ^.*(htmll).*$ controller.php?action=nopage [qsappend,L]

RewriteRule (^.*)\.(.*)\.html$  controller.php?rewriteKey=$1&rewriteParams=$2 [qsappend,L]
RewriteRule (^.*)\.html$  controller.php?rewriteKey=$1 [qsappend,L]
RewriteRule monpanier controller.php?action=showFunnel
RewriteRule monadresse controller.php?action=showFunnel

您可以在规则中使用此正则表达式:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!blog)[A-Za-z0-9/-]+)/?$ controller.php?action=nopage [QSA,L,R=301]

确保此规则位于底部。

由于某种原因,您的正则表达式正在
.com
中捕获
m
。这个正则表达式似乎解决了以下问题:

^(?:(?!blog).)*?\/([A-Za-z0-9\/-]+)$

@anubhava:thx但它不工作=>在此服务器上找不到请求的URL/mypage/。而不是像/controller.php这样的重定向?action=nopage这个.htaccess的文件系统位置是什么?您能从最新的.htaccess复制/粘贴代码吗?我在这里看不到建议的规则。顺便说一句,我的规则应该放在底部,因为它捕获每个URI。我通过替换字符串^(.\.\.\).[a-z]*$regex不起作用检查更新的规则,让我知道它不起作用的URL是什么?
^(?:(?!blog).)*?\/([A-Za-z0-9\/-]+)$