Apache 如何将htaccess平面链接重写为真实查询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

我在这里读了很多问答,但没有找到有效的解决方案。我想将URL从平面链接语法更改为“常规”查询

我如何从中获得:

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。