这是我的第一篇文章,请原谅我,如果我的求助方式出错了。我一直在阅读与我的问题相关的其他帖子但没有解决它。
我的路径:
... 等等。
我想将 / m / pageX 更改为 / m /#pageX ,而无需对网址进行硬编码,也不使用任何其他php脚本。
乍一看,我通过编写以下.htaccess配置文件完成了这项任务:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^[dm]/(.+)$ /m/#$1 [R=302,NE,L,NC]
## hide .php extension
RewriteCond %{THE_REQUEST} \s/+common_([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=302,L,NE]
## To internally forward
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/common_$1.php -f
RewriteRule ^(.+?)/?$ common_$1.php [L]
谢谢
答案 0 :(得分:1)
网址不支持#符号。
这会将/ m / pageX重写为/ d / pageX:
RewriteEngine On
RewriteRule ^m/(.*) /d/$1 [L,R=301]
这会将/ m / pageX重写为/ d / pageX#示例,但#example已修复:
RewriteEngine On
RewriteRule ^m/(.*) /d/$1#example [NE,L,R=301]
[NE]是保持哈希(#)符号的必要条件。
这会将/ m / pageX重写为/ d /#pageX:
RewriteEngine On
RewriteRule ^m/(.*) /d/#$1 [NE,L,R=301]
答案 1 :(得分:0)
在根.htaccess(高于/m/
和/d/
的级别)中尝试这些规则:
RewriteEngine On
RewriteRule ^d/(.+)$ /m/#$1 [NE,NC,L,R=302]
RewriteRule ^(.+)$ /#$1 [NE,L,R=302]
确保删除任何/d/.htaccess
文件。
如果由于某种原因您希望从/d/.htaccess
执行此操作,请在/d/.htaccess
文件中使用此规则:
RewriteEngine On
RewriteRule ^(.+)$ /m/#$1 [NE,NC,L,R=302]