首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mod_rewrite :为什么它在本地而不是在网上工作?

mod_rewrite :为什么它在本地而不是在网上工作?
EN

Stack Overflow用户
提问于 2009-04-30 22:24:56
回答 3查看 273关注 0票数 0

我正在本地开发一个应用程序(在域名.dev下)。

为了使用友好的urls,我将我的.htaccess设置如下:

代码语言:javascript
复制
RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

效果很好。令人烦恼的是,当你上网的时候,它就没那么好了:

http://example.com/issue/my-slug/#23不返回GET变量。为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-30 22:49:52

根据过去的经验,我的猜测是RewriteBase,可能是因为您在共享服务器上,或者其他一些非标准配置。

代码语言:javascript
复制
RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks
票数 0
EN

Stack Overflow用户

发布于 2009-04-30 22:48:14

我看不出来

代码语言:javascript
复制
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

应该匹配该URL,但这是唯一一个具有R标志的外部重定向。尝试将该行注释掉,以确保应用程序中没有其他部分执行重定向操作。我猜是有。

票数 0
EN

Stack Overflow用户

发布于 2009-12-23 17:08:59

替换URL和标志之间缺少一些空格。您还可以将第一条规则简化如下:

代码语言:javascript
复制
RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/809412

复制
相关文章

相似问题

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