首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mod_rewrite导致500个服务器错误/失败/部分工作

mod_rewrite导致500个服务器错误/失败/部分工作
EN

Stack Overflow用户
提问于 2013-04-02 13:53:31
回答 2查看 133关注 0票数 0

我试图做一个永久的重定向从我的旧设计(www.your-translations.com)到我在YT的新设计。

在此过程中,urls必须改变这种格式:

www.your-translations.com/my_page.php

采用这种格式:

www.your-translations.com/_YT/index.php?pge=my_page

到目前为止,我已经做了很多尝试,最近的尝试是:

代码语言:javascript
运行
复制
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST}    ^.*your\-translations.com.*$    [NC] 
RewriteRule ^(.*?)/([^/]*)\.php $1/_YT/index.php?pge=$2 [R=302]
RewriteCond %{HTTP_HOST} ^your-translations.com [NC] 
RewriteRule ^(.*)$ http://www.your-translations.com/$1 [R=302,L]

这是我的一个更好的尝试,因为它显然什么也不做(以前的尝试已经导致505个错误和无限循环)。将URL重写为“www”。正常工作。

我已经在不同的regex测试人员中测试了regex,它似乎做了我希望它做的事情。

有人能解释我做错了什么吗?

  1. 这个模式到底应用于什么?这是RewriteCond所匹配的吗?当我输入URI的时候?相对路径?服务器上的实际路径?

在我试着匹配字符串之前,有什么方法显示字符串吗?

  1. 在教程中发现的几个建议会在我的服务器上产生无限循环。所有版本的工作方式都一样吗?

不幸的是,them主机的技术支持似乎对mod_rewrite一无所知,所以我不能指望他们提供任何帮助。

根据我的FTP日志,我已经做了大约80次尝试,我真的需要一只手在这里。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 07:19:04

由于网母世界的一些解释,我能够修复我的mod_rewrite代码:

代码语言:javascript
运行
复制
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^your-translations.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.your-translations.com [NC]
RewriteCond %{REQUEST_URI} !="^.*?/.*" 
RewriteRule ^([^/]*)\.php$ http://www.your-translations.com/_YT/index.php?pge=$1 [R=302,L]
RewriteRule ^$ http://www.your-translations.com/_YT/ [R=302,L]

到目前为止,这似乎是正确的(接触木头)。谢谢仆人的帮助。

票数 0
EN

Stack Overflow用户

发布于 2013-04-02 15:18:39

代码语言:javascript
运行
复制
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^your-translations\.com$
RewriteCond %{REQUEST_URI} !^/_YT/([a-z0-9-_]+)\.php$
RewriteCond %{REQUEST_URI} ^/([a-z0-9-_]+)\.php$
RewriteRule ^(.*) /_YT/index.php?pge=%1 [QSA]

RewriteCond %{HTTP_HOST} ^www\.your-translations\.com$
RewriteCond %{REQUEST_URI} !^/_YT/([a-z0-9-_]+)\.php$
RewriteCond %{REQUEST_URI} ^/([a-z0-9-_]+)\.php$
RewriteRule ^(.*) /_YT/index.php?pge=%1 [QSA]

在RewriteCond中,必须在点之前键入反斜杠,而不是在破折号之前键入反斜杠,因为.htaccess中的点表示任何字符,因此需要使用bslash来调用是点。对不起,我在手机,所以我无法解释更多,但请随时询问您想知道的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15765955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档