Apache mod_重写将目录更改为变量

Apache mod_重写将目录更改为变量,apache,mod-rewrite,Apache,Mod Rewrite,我不想抱怨mod_重写,但regex让我看得很清楚 好的,我该如何为这个进行mod_重写: http://domain.com/version1/pg/[VAR]/ 致: 我整天都在绕圈子。这应该行得通: RewriteEngine On RewriteRule ^version1/pg/([^/]*)$ /version1/page.php?page=$1 [L] RewriteEngine On RewriteRule ^version1/pg/([^/]*)$ /version1/pa

我不想抱怨mod_重写,但regex让我看得很清楚

好的,我该如何为这个进行mod_重写:

http://domain.com/version1/pg/[VAR]/
致:

我整天都在绕圈子。这应该行得通:

RewriteEngine On
RewriteRule ^version1/pg/([^/]*)$ /version1/page.php?page=$1 [L]
RewriteEngine On
RewriteRule ^version1/pg/([^/]*)$ /version1/page.php?page=$1 [QSA,L]
基本上,它会将
version1/pg/[VAR]
重定向到
/version1/page.php?page=[VAR]

我希望这能有所帮助。

这应该可以:

RewriteEngine On
RewriteRule ^version1/pg/([^/]*)$ /version1/page.php?page=$1 [L]
RewriteEngine On
RewriteRule ^version1/pg/([^/]*)$ /version1/page.php?page=$1 [QSA,L]
告诉我这是否有效

两个提示:
请尝试使用
RewriteLog
指令:它可以帮助您跟踪此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢的检查regexp的工具:

(别忘了选择ereg(POSIX)而不是preg(PCRE)!)

我可以请您在问题中添加重写日志吗?


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pg/([^/]*)$ page.php?page=$1 [QSA,L]
RewriteRule ^pg/([^/]*)/$ page.php?page=$1 [QSA,L]
</IfModule>
重新启动发动机 重写cond%{REQUEST_FILENAME}-F 重写cond%{REQUEST_FILENAME}-D 重写规则^pg/([^/]*)$page.php?page=$1[QSA,L] 重写规则^pg/([^/]*)/$page.php?page=$1[QSA,L]
因此,如果URL是:mywebsite.com/version1/pg/sample/

mywebsite.com/version1/pg/sample

它会将URL重写为:


mywebsite.com/version1/page.php?page=sample

这给了我一个404。(我感谢你尝试回答这个问题……我肯定会代表我能得到的任何帮助。)好的。我自己重写mod_有很多麻烦,我能理解你的沮丧;-)。您确定目录中存在
page.php
?这也可能是因为Apache不/无法读取.htaccess文件(这种情况发生在我身上,有时可能是用户权限问题)。如果您以root用户身份访问服务器,可以尝试将其放入
/etc/apache
中的域配置文件中。我检查了错误日志,它正在查找版本1/pg/文件,并说它不存在。我认为正则表达式代码有问题。你确定你安装了mod_重写模块吗?出于某种原因,它没有做它应该做的。正则表达式应该是正确的,我以前用过它。我找到了它,我改变了这个问题,以反映这个问题的效果。感谢你的帮助!非常感谢。我想出来了,我已经改变了这个问题,以反映这个问题的工作。感谢你的帮助!我的荣幸!如果你解决了它,让你的问题像它一样,回答下面的你自己,并检查它作为“回答”以后。谢谢!我已经添加了答案,我可以在两天内选择它。但它奏效了,我很高兴!:)如果没有你们两个都帮了我的忙,我不可能做到这一点。只有一条规则能起作用,而不是两条:
RewriteRule^pg/([^/]*)[/]?$page.php?page=$1[QSA,L]