我正在尝试重定向我的域上的链接。
我想要实现的是:
当用户点击链接时
mydomain.com/index.php?dir=myfolder
我希望他被重定向到这个 URL,但浏览器栏应该显示这个 URL:
mydomain.com/myfolder
由于我无权访问如何建立链接(它是一个 php 站点),我尝试仅使用 .htaccess 文件来完成此操作。
这就是我所拥有的:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} subdomain.mydomain.com
RewriteCond %{REQUEST_URI} (.*)/style.css [OR]
RewriteCond %{REQUEST_URI} (.*)/script.js [OR]
RewriteCond %{REQUEST_URI} (.*)/logo.png
RewriteRule (.*) http://www.subdomain.com%{REQUEST_URI} [R=301,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=$1 [L]
所以当我进入"mydomain.com/myfolder"
在浏览器中它工作正常并且地址栏中的 URL 保持这样。但是当我进入"mydomain.com/index.php?dir=myfolder"
它也可以工作,但 URL 也保持不变(这不是我想要的)。
我假设我需要以某种方式更改 .htaccess 文件的 URL,然后将其(就像我已经做的那样)重写为 php-scheme。
我现在做了几种方法,但我不知道该怎么做。
我希望你能理解我的问题并能帮助我!
谢谢你!
EDIT:
解决方案(感谢@anubhava):
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=([^\s]+) [NC]
RewriteRule ^ %1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=/$1 [L]