我将我的网站移到了不同的服务器,从那时起,我的所有网址都开始显示404错误。
早些时候我的所有网址都像是mysite.com/title-of-url
但现在所有这些网址都出现404错误,所以我在网站管理员上禁用了seo友好网址功能,现在我可以访问同一页面了 mysite.com/index.php/title-of-url
我厌倦了为.htaccess创建一些正则表达式 RewriteRule ^([^ /。] +)/?$ /index.php/$1 [L]
但它工作正常的一个“/”深度,我的意思是它在mysite.com/first工作但不适用于mysite.com/first/second
我正在寻找REGEX帮助考虑它 mysite.com/first/second应该重写为mysite.com/index.php/first/second以及mysite.com/something被重写为mysite.com/index.php/something ..
期待您的帮助 感谢
答案 0 :(得分:1)
当然,它不适用于更多/
。你的规则说:
^
$1
:(
)[^/]+
)
)/?
$
如果你真的想要匹配所有内容,请使用点而不是字符类,匹配除/
以外的所有内容:
RewriteRule ^(.+?)/?$ /index.php/$1 [L]
不要忘记在排除现有文件和目录之前包含RewriteCond
,以避免无限递归。如果不这样做,最终会出现500内部服务器错误。完整代码:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ /index.php/$1 [L]