Apache .htaccess-url中不带子文件夹的字符串
URL如下所示Apache .htaccess-url中不带子文件夹的字符串,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,URL如下所示http://local.example.com/features.html我需要的是添加一个类似“country”的文本http://local.example.com/us/feature.html但是当我点击URL时,网站显示了404错误代码 这仅是可视的,无需创建US子文件夹 代码 RewriteEngine On RewriteCond %{HTTP_HOST} local.example.com$ [NC] RewriteCond %{HTTP_COOKIE} loca
http://local.example.com/features.html
我需要的是添加一个类似“country”的文本http://local.example.com/us/feature.html
但是当我点击URL时,网站显示了404错误代码
这仅是可视的,无需创建US子文件夹 代码
RewriteEngine On
RewriteCond %{HTTP_HOST} local.example.com$ [NC]
RewriteCond %{HTTP_COOKIE} location=us [NC] --> CHECK COOKIE FOR ACTION
RewriteCond %{REQUEST_URI} !^/us/ --> EXCLUDE US FOR REDIRECT LOOP
RewriteCond %{REQUEST_URI} !^/blog/ --> EXCLUDE BLOG FOLDER WITH WORDPRESS
RewriteRule ^(.*)!\.(css|js|png|jpg)$ http://local.example.com/us/$1 [R=302,L]
重写规则
模式将与请求的URL不匹配(因为错误的!
),因此此指令实际上不会执行任何操作。由此,我还假设您希望排除对CSS、JS、.png
和.jpg
文件的请求?您还有一个条件,排除对/blog/
子目录的请求,但是,您在问题中没有提到这一点吗
代码中是否也引用了cookie?但是,您在问题中没有提到这一点,并且这在当前状态下不起作用(因为它不会出现在初始请求中),因此我暂时忽略这一点
请尝试以下操作:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^local\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg)$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule !^us/ /us%{REQUEST_URI} [R=302,L]
上述说明,给出了对/foo/bar
的请求
/us/
主机
local.example.com
.css
、.js
、.png
或.jpg
结尾的URL/blog/
/us/foo/bar
除非此帐户上有多个主机,否则您不需要在规则中明确检查
主机
标题?“不创建美国子文件夹。”-啊,在发布我的答案后才注意到这一点。如果/us
子文件夹实际上不存在,那么http://local.example.com/us/feature.html
需要解决吗?您在HTML源代码中实际链接到的URL是什么?啊哈,我没有提到这一点的错误。您的代码工作得非常完美,但我的想法(当然,如果可能的话)不是执行重定向,而是在视觉级别添加US。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^local\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg)$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule !^us/ /us%{REQUEST_URI} [R=302,L]