对于我的家人,我给每个人都有自己的子域名 (sister1.mydomain.com,sister2.mydomain.com等......)
我使用PHP来检测域,然后我动态地加载与子域相关的信息。
我想摆脱子域名并使用.htaccess
的力量
我的目标是提供相同的网址:
www.mydomain.com/sister1
www.mydomain.com/sister2
www.mydomain.com/mommy
www.mydomain.com/daddyo
显然,我并不打算为每个人提供文字工作目录。 我通过了'姐妹1"部分到process.php脚本,负责其余部分。
我通过在htaccess文件中手动输入每个RewriteRule
来弄清楚如何操作:
Options +FollowSymLinks
AddDefaultCharset UTF-8
RewriteEngine on
RewriteBase /
RewriteRule ^/?sister1$ process.php?entity=sister1 [L]
RewriteRule ^/?sister2$ process.php?entity=sister2[L]
RewriteRule ^/?mommy$ process.php?entity=mommy[L]
RewriteRule ^/?daddyo$ process.php?entity=daddyo[L]
我觉得这是做得很好的漫长道路。 是否有更通用的方法在第一个" /"之后提取文本? forwardslash,并将其传递给process.php?entity = $ 1?
我试过这种方式:
RewriteRule ^ /([A-Za-z0-9 - ] +)/?$ process.php?entity = $ 1 [NC,L]
我收到了apache 404错误:" Not Found"。
答案 0 :(得分:1)
这是因为您在规则开头有强制性/
,即您始终在网址中寻找/sibling
之类的内容。您的第一个示例将第一个正斜杠作为可选项,因为它后面有问号。
你不需要一个开头的正斜杠 - 通常重写规则会在域名之后选择东西
www.example.com/string/mod/rewrite/gets/is.here
所以只需删除起始斜杠即可。