Apache 如何将htaccess平面链接重写为真实查询url
我在这里读了很多问答,但没有找到有效的解决方案。我想将URL从平面链接语法更改为“常规”查询 我如何从中获得:Apache 如何将htaccess平面链接重写为真实查询url,apache,.htaccess,rewrite,Apache,.htaccess,Rewrite,我在这里读了很多问答,但没有找到有效的解决方案。我想将URL从平面链接语法更改为“常规”查询 我如何从中获得: http://localhost/start/__developer/pages/12016652 为此: http://localhost/start/__developer/pages/suche.php?objektnr=12016652 是通过htaccess还是PHP?请不要理这些卷发。提前感谢您的支持 在这一点上,我正在尝试: Options +Follo
http://localhost/start/__developer/pages/12016652
为此:
http://localhost/start/__developer/pages/suche.php?objektnr=12016652
是通过htaccess还是PHP?请不要理这些卷发。提前感谢您的支持
在这一点上,我正在尝试:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /start/__developer/immo-shg-v4/pages/
RewriteRule ^([0-9]+)$ suche.php?objektnr=$1 [QSA,L,NC]
RewriteRule ^([0-9]+)$ suche.php?objektnr=$1 [L,NC,NE,R]
解决方案:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /start/__developer/immo-shg-v4/pages/
RewriteRule ^([0-9]+)$ suche.php?objektnr=$1 [QSA,L,NC]
RewriteRule ^([0-9]+)$ suche.php?objektnr=$1 [L,NC,NE,R]
[R]标志强制重定向。
通过您的httpd.conf启用.htaccess它尚未启用,请将这些行放入DOCUMENT\u根文件夹中的.htaccess文件中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-f
#This is your redirect rule
RewriteCond %{QUERY_STRING} !(?:^|&)objektnr=([^&]*)(?:&|$) [NC]
RewriteRule ^(start/__developer/pages/)([^/]*) $1suche.php?objektnr=$2 [L,NC,QSA]
根据您在下面的评论,我们有另一条类似的重写规则:
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !(?:^|&)objektnr=([^&]*)(?:&|$) [NC]
#This is your modified redirect rule
RewriteRule ^(start/__developer/immo-shg-v4/pages/)([^/]*) $1suche.php?objektnr=$2 [L,NC,QSA]
如果您只想允许数字,请使用
[0-9]
而不是[^/]
。非常感谢!不过还没开始工作。我得到一个请求的URL/start/u developer/immo-shg-v4/pages/12016652在此服务器上找不到。
当然找不到,因为它不是真实的位置。这也是我在自己的选拔赛中得到的。有什么想法吗?显然不会,因为你问的URI是:/start/\uu developer/pages/12016652
,但你试图重定向/start/\uu developer/immo-shg-v4/pages/12016652
,中间有额外的/immo-shg-v4。我编辑了我的答案,为你的新URI添加了一条规则。请检查。哦,孩子!可耻!谢谢你这么快就赶上了。不幸的是,我仍然得到一个“404未找到”在此服务器上找不到请求的URL/start/\u developer/immo-shg-v4/pages/12024635。