URL rewrite 不重写页面
URL rewrite doesn't rewrite page
我尝试使用 URL 重写模块,但由于某些原因它不会重写 URL。如果我去这个网站:http://localhost/projectredrum/foto.php
它会显示正确的页面,但它不会将 URL 重写为我想要的。
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projectredrum/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^foto\.php$ /Aquaria-Foto/Fotos
</IfModule>
看完上面提到的教程后,我想我应该试试没有
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
因为如果你使用它,它只会在 URL 与文件名或目录不匹配时重写 URL。
然而,当我这样做时,我遇到了 404 page not found
问题。
有谁知道为什么 URL 重写不起作用?
由于这种情况无法正常工作:
RewriteCond %{REQUEST_FILENAME} !-f
因为 http://localhost/projectredrum/foto.php
是一个有效文件。
要修复规则,您可以在 /projectredrum/.htaccess
:
中使用它
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projectredrum/
RewriteCond %{THE_REQUEST} /foto\.php[?\s] [NC]
RewriteRule ^ /Aquaria-Foto/Fotos [L,NC,R=302]
R=302
用于在浏览器中实际重定向 URL。
在DocumentRoot/.htaccess
中你可以使用:
RewriteEngine On
RewriteRule ^Aquaria-Foto/Fotos/?$ /projectredrum/foto.php [L,NC]
参考文献:
Apache 进行本地重写,因为页面在同一个服务器中,它可以在同一个请求上加载它。将 [R,L]
添加到 RewriteRule 行的末尾以将浏览器重定向到所需地址。
R表示临时重定向,
L 表示最后一条规则。
R=301 是永久重定向
例如 [R=301,L]
进行永久重定向并停止检查其他规则。
在你的情况下,你可能想使用这种行:
RewriteRule ^foto\.php$ /Aquaria-Foto/Fotos [R,L]
这里是关于标志的更多信息:http://httpd.apache.org/docs/2.4/rewrite/flags.html
我尝试使用 URL 重写模块,但由于某些原因它不会重写 URL。如果我去这个网站:http://localhost/projectredrum/foto.php
它会显示正确的页面,但它不会将 URL 重写为我想要的。
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projectredrum/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^foto\.php$ /Aquaria-Foto/Fotos
</IfModule>
看完上面提到的教程后,我想我应该试试没有
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
因为如果你使用它,它只会在 URL 与文件名或目录不匹配时重写 URL。
然而,当我这样做时,我遇到了 404 page not found
问题。
有谁知道为什么 URL 重写不起作用?
由于这种情况无法正常工作:
RewriteCond %{REQUEST_FILENAME} !-f
因为 http://localhost/projectredrum/foto.php
是一个有效文件。
要修复规则,您可以在 /projectredrum/.htaccess
:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projectredrum/
RewriteCond %{THE_REQUEST} /foto\.php[?\s] [NC]
RewriteRule ^ /Aquaria-Foto/Fotos [L,NC,R=302]
R=302
用于在浏览器中实际重定向 URL。
在DocumentRoot/.htaccess
中你可以使用:
RewriteEngine On
RewriteRule ^Aquaria-Foto/Fotos/?$ /projectredrum/foto.php [L,NC]
参考文献:
Apache 进行本地重写,因为页面在同一个服务器中,它可以在同一个请求上加载它。将 [R,L]
添加到 RewriteRule 行的末尾以将浏览器重定向到所需地址。
R表示临时重定向,
L 表示最后一条规则。
R=301 是永久重定向
例如 [R=301,L]
进行永久重定向并停止检查其他规则。
在你的情况下,你可能想使用这种行:
RewriteRule ^foto\.php$ /Aquaria-Foto/Fotos [R,L]
这里是关于标志的更多信息:http://httpd.apache.org/docs/2.4/rewrite/flags.html