Php 使用Mod_rewrite在URL末尾添加前缀

Php 使用Mod_rewrite在URL末尾添加前缀,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在制作一个简单的URL缩短器,但是在修改Mod_时遇到了一些问题~ RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^hu/([^/]*)$ /?code=$1 [L,QSA] RewriteCond %{HTTP_HOST} !^AgeofW\.us$ RewriteRule ^(.*)([^hu/])$ http://%{HTTP_H

我正在制作一个简单的URL缩短器,但是在修改Mod_时遇到了一些问题~

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^hu/([^/]*)$ /?code=$1 [L,QSA]
RewriteCond %{HTTP_HOST} !^AgeofW\.us$ 
RewriteRule ^(.*)([^hu/])$ http://%{HTTP_HOST}/hu/$1 [R=301]
URL的概念是“AgeofW.us/hu/”,在URL的末尾有一个尾随的/hu/,不管发生什么。但是再一次。我在这方面有一些问题。我已经试了一两个小时了,我被迫在这里提问!有人有主意吗?或者向我解释?我会记住的,哈哈


~~这将生成一个无限循环,该循环生成:在此服务器上找不到请求的URL/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/。~一遍又一遍

我已经多次尝试,并对代码进行了修改,但还没有找到一个可行的解决方案。

您可以使用:

RewriteEngine On

RewriteCond %{THE_REQUEST} !/hu/ [NC]
RewriteCond %{HTTP_HOST} AgeofW\.us$ [NC]
RewriteRule !^hu/ /hu%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^hu/([^/]*)/?$ /?code=$1 [L,QSA]
  • 通常,在重写重定向规则之前,请先保留重定向规则
  • [^hu/]
    非hu/
    匹配的正则表达式不正确

  • 请求的URL/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/就是该URL的响应。
    重写规则^hu/
    如果已经存在,则不会添加
    /hu/
    。你能在新浏览器中测试一下吗。@BioblazePayne:用最新的规则更新再试一次。@Sumurai8:请详细说明为什么它会导致无限循环。我很乐意更正。在此服务器上找不到请求的URL/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/hu/。~同样的问题。它创建了一个无限循环。这正是我一直面临的问题。不知道为什么。我知道L标志是用于循环的,但我不明白为什么它会为循环生成max/hu(✓), (2) 清楚地描述您希望代码做什么(这里或多或少),并(3)准确地告诉我们当前代码正在做什么(完全缺失)。请编辑您的问题,并在缺少的信息中进行编辑。标题准确地解释了问题的原因。说明在那里,也解释了问题。代码本身就在您面前。不要对问题投反对票,因为您的视力不好。您的问题说明是“我对此有一些问题”。这是合乎逻辑的。如果您的代码正在执行预期的操作,则不会在此处发布。但这不是一个好的问题描述。一个好的问题描述描述了您在屏幕上看到的内容,例如,您得到了一个无限循环。