Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess HTACCESS复杂查询_.htaccess - Fatal编程技术网

.htaccess HTACCESS复杂查询

.htaccess HTACCESS复杂查询,.htaccess,.htaccess,嘿!我有一个关于HTACCESS的问题 我知道如何将301从所有小写字母转换为所有大写字母,反之亦然,但我对这个感到困惑 我想通过HTaccess执行301重定向。我的页面看起来像www.mysite.com/James或www.mysite.com/Paul 我希望像www.mysite.com/JAMES或www.mysite.com/JAMES或www.mysite.com/JAMES这样的页面301重定向到www.mysite.com/JAMES(适当情况下)。。你知道怎么做吗?我想你只

嘿!我有一个关于HTACCESS的问题

我知道如何将301从所有小写字母转换为所有大写字母,反之亦然,但我对这个感到困惑

我想通过HTaccess执行301重定向。我的页面看起来像www.mysite.com/James或www.mysite.com/Paul


我希望像www.mysite.com/JAMES或www.mysite.com/JAMES或www.mysite.com/JAMES这样的页面301重定向到www.mysite.com/JAMES(适当情况下)。。你知道怎么做吗?

我想你只是想要这样的东西,尽管正如佩卡提到的,没有更多细节就有点难以确定:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/[A-Z][a-z]+$
RewriteRule ^/?([A-Za-z])([A-Za-z]+)$ http://www.example.com/${toupper:$1}${tolower:$2} [L,R]
请记住,您必须在服务器的配置中实际定义
toupper
tolower
映射,如果您无法控制服务器或虚拟主机定义,这是不可能的

httpd.conf
或虚拟主机:

RewriteMap toupper int:toupper
RewriteMap tolower int:tolower
顺便说一句,我对为什么必须显式声明
mod_rewrite
的内部映射函数感到相当困惑,但这就是代码所说的(文档中没有提到的),所以就这样吧

编辑:要将空格分隔字符串中的一个或多个单词大写,可以执行以下操作:

RewriteEngine On

RewriteCond $1   (.*)((?:\s|\A)[A-Za-z])([A-Za-z]+)$
RewriteCond $1 !^(\s?[A-Z][a-z]+)+$
RewriteRule /?(.*) %1 [N,E=CC_URL:${toupper:%2}${tolower:%3}%{ENV:CC_URL}]

RewriteCond %{ENV:CC_URL} !=""
RewriteRule .* http://www.example.com/$0%{ENV:CC_URL} [L,R]
不过,在让它在野外运行之前,我会对它进行彻底的测试。我相当确定它应该可以正常工作,但由于它可能会导致无限循环,并使您的
httpd
儿童失控…请谨慎使用


编辑:哎呀,我意识到如果URL中有一部分的格式是正确的,那么第二个条件就不起作用了。我现在把它改得更可靠了。

这适用于任何目录名吗,或者您是否在某处有一个名称列表?如果是,在哪里?请提供更多信息。嘿,佩卡-谢谢你的回复。我做了这个SEO友好的事情。最初,看起来像mysite.com/product.php?id=1的页面现在看起来像mysite.com/James。我使用了以下方法:RewriteRule^(.*)/(.*)$destination.php?id=$1&tab=$2存储了一百万个Tim,所以为了澄清一下,像mysite.com/Tim这样的url将被重新编写为mysite.com/Tim?假设有一个叫做mysite.com/tim stack overflow(三个带空格的单词),这也行吗?是的。编辑处理了第二部分(并保留了第一部分的功能)。Tim,似乎什么都没有发生,除了当我键入没有尾随的url/它将我带到主页。有没有可能我们可以互动,你可以为我做一个项目?如果没有,请不要担心,问问就可以了。你的URL和你建议的完全一样吗?(你对佩卡的评论表明它们可能更复杂一些)。就项目而言,不幸的是,我没有能力做那种事情,尽管其他人可能愿意。