我遇到了.htaccess的问题
此时我有这样的事情:
http://example.com/page-example?getVariable=1234
但我想要的是:
http://example.com/page/example/1234
我尝试使用.htacces用斜杠替换连字符
Options +FollowSymlinks -MultiViews
RewriteRule ^([^/]+)-([^/]+).php/?$ /$1/$2 [R,L]
我得到了类似的东西
http://example.com/page/example?getVariable=1234
但服务器无法找到路径,我认为这是因为它承认“页面”是一个文件夹。
我怎样才能做我想做的事,但是服务器在根文件夹中搜索文件'page-example.php'而不是'/ page /'中的'example.php'?
PS:我已经使用下面的代码来删除.php扩展名和'www。'来自网址。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
答案 0 :(得分:1)
在您已有的规则之前,请尝试添加:
RewriteCond %{THE_REQUEST} \ /+page-([^/]+)(?:\.php|)\?getVariable=([^&\ ]+)
RewriteRule ^ /page/%1/%2? [L,R]
RewriteRule ^page/([^/]+)/([^/]+)$ /page-$1.php?getVariable=$2 [L,QSA]
所以整个事情看起来像:
RewriteEngine on
RewriteCond %{THE_REQUEST} \ /+page-([^/]+)(?:\.php|)\?getVariable=([^&\ ]+)
RewriteRule ^ /page/%1/%2? [L,R]
RewriteRule ^page/([^/]+)/([^/]+)$ /page-$1.php?getVariable=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php