我已成功创建重写规则来处理 URL,例如
这是 mod 重写和正则表达式:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([0-9]+)(?:\/)?$ /index.php?p=$1 [L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)(?:\/)?$ /index.php?n=$1 [L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)/([-a-zA-Z0-9_+]+)(?:\/)?$ /index.php?n=$2 [L]
这很好用,但问题是当我转到http://example.com/xyz/abc时,我的脚本得到了正确的输入(n=abc)但路径搞砸了,所以我的代码中的所有相对 URL被破坏了,因为它们现在是相对于 xyz 而不是根。
有没有办法解决这个问题?正如您在上面看到的,我试图重定向到 /index.php 以强制路径正确。经过一整天的正则表达式和代码,我的大脑被煎炸了,所以我希望这不是一件极其微不足道的事情。