我有一个htaccess RewriteRule,它将url auth/register.php显示为/register,如下所示:
RewriteCond %{REQUEST_URI} register
RewriteRule ^register/?$ /auth/register.php [NC,L]但是,现在当有人在浏览器窗口中手动键入auth/register.php时,我需要确保他们看到的是/register。我用的是
Redirect /auth/register.php /register但很明显,这会造成无限的重定向循环。有什么想法让我可以让任何尝试去/auth/register.php的人转到/register,但它仍然显示auth/register.php的内容,而不会永远重定向?谢谢!
发布于 2017-09-29 18:26:49
你需要写一个别名。
在这里,RewriteRule会始终将你重定向到新的url。所以使用它就是让你重定向到/auth/register.php。此外,您还编写了一个重定向规则,该规则将重定向到/register。这是这两个重定向的无限循环。
应该编写的代码是
Alias /register /auth/register.php 这不应该写在.htaccess文件中。应在您网站的虚拟主机文件中写入
它看起来像这样
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /register /auth/register.php //Add this line only donot disturb any other lines
</VirtualHost>在.htaccess文件中,仅包含此行
Redirect /auth/register.php /register不包含
RewriteCond %{REQUEST_URI} register
RewriteRule ^register/?$ /auth/register.php [NC,L]https://stackoverflow.com/questions/46479003
复制相似问题