我有一个旧网站,我已经接管了。新用户基本上会获得为他们创建的自定义页面。这是以一种不太奇妙的方式完成的。目前,它实际上生成一个以创建的 slug URL 命名的文件,并将其符号链接到名为“/main/”的文件夹。显然我想改变这一点。我的计划只是让它通过 .htaccess 将不存在的文件夹重定向到“/main/”。目前,这是我的 .htaccess 的样子:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|index\.htm)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /main/ [L]
然而,这会产生重定向循环。我缺少什么?
Edit
在这一点上,我意识到我应该说我希望它保持输入的路径。例如,如果我把http://www.mydomain.com/test_person它应该保留该地址,但如果有意义的话,请将所有内容转发到主文件夹。
您希望您的规则不要重写已经以 main 开头的 URL,以免循环,例如:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^main/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]+/(.*)$ /main/$1 [L]
[L] 的真正含义并不像您所认为的 [L] 在 .htaccess 文件上下文中的含义。
您应该能够从 REQUEST_URI 环境变量获取请求的原始 url,但常见的做法是将 slug 作为 GET 变量传递到目标。
RewriteRule ^([^/]+)/(.*)$ /main/$2?user=$1 [QSA,L]
或者将所有内容传递给单个脚本,该脚本解释 URL 并找到要返回的正确内容:
RewriteRule ^([^/]+)/(.*)$ /main/index.php?user=$1&path=$2 [QSA,L]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)