将类似/xyz的URL重定向到/index.php?goto=xyz
我正在尝试从URL重写请求,如:将类似/xyz的URL重定向到/index.php?goto=xyz,php,apache,.htaccess,redirect,Php,Apache,.htaccess,Redirect,我正在尝试从URL重写请求,如: www.domain.com/xyz 到 www.domain.com/index.php?goto=xyz 计划是自己在index.php中处理请求。如果URL保持www.domain.com/xyz,那就太好了,如果确实有一个名为xyz的文件夹,那么不重定向也太好了 我试过这个: RewriteRule^/(.*)$/index.php?goto=$1[R=301,NC,L] 但这不会保留URL,也不会检查是否已经存在文件夹xyz,最重要的是它总是转到ind
www.domain.com/xyz
到
www.domain.com/index.php?goto=xyz
计划是自己在index.php中处理请求。如果URL保持www.domain.com/xyz
,那就太好了,如果确实有一个名为xyz
的文件夹,那么不重定向也太好了
我试过这个:
RewriteRule^/(.*)$/index.php?goto=$1[R=301,NC,L]
但这不会保留URL,也不会检查是否已经存在文件夹xyz,最重要的是它总是转到index.php?goto=index.php
安迪的帮助将不胜感激 您需要检查规则中是否存在文件和目录。将此规则保留在root.htaccess中:
RewriteEngine On
RewriteRule ^index\.php$ - [L,NC]
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?goto=$1 [QSA,L]
非常感谢,到目前为止效果很好!还有一个小问题。如果我请求一个像/test这样的URL,并且test是一个真实的文件夹,它会将我重定向到index.php?goto=index.php,而不是转到那个特定的文件夹。这些规则不会发生这种情况。清除浏览器缓存并重试。在我执行此操作后不久,我遇到了一个PHP致命错误:允许的内存大小为262144字节。这次重写是否产生了副作用?没有重写规则与PHP错误无关。查看php.ini以分配更多内存,否则可能会出现一些php代码问题。