【问题标题】:PHP Apache .htaccess URL Rewriting multiple variablesPHP Apache .htaccess URL 重写多个变量
【发布时间】:2019-08-14 17:48:23
【问题描述】:

这是一个长镜头,我不确定我是否已经尝试了几种不同的方法来重写 .htaccess 中的 URL。我想要的是保留页面名称,然后用 / 我开始工作的方法替换变量之后我必须创建一个名为 Issues 的文件夹,然后在其中放置一个新的 .htaccess 文件和一个应该允许我的 index.php我想要的路径。

我正在寻找的路径;

“问题/项目 ID”

如果不是破折号,我将不得不关注 url / 或

"Issues/Project/ID"

我目前的设置是;

Issues.php?Project=name&ID=3

我一直在使用的当前代码是这样的;

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^([^/]+)(/([^/]+))? Issues?Project=$1&ID=$2 [L]
</IfModule>

当我让它使用一个变量时,它认为 url 是一个文件夹并破坏了我的导航,issues/ 认为它在根目录之外。不确定这是否可以从根目录运行。

编辑:

我也尝试了一种新方法。

http://domain/Issues/Project/name/ID/2/

Options +FollowSymLinks
RewriteEngine on
RewriteRule Issues/Project/(.*)/ID/(.*)/ Issues.php?Project=$1&ID=$2
RewriteRule Issues/Project/(.*)/ID/(.*) Issues.php?Project=$1&ID=$2 

但是 $_GET 没有得到 Project 或 ID 的值

【问题讨论】:

  • 我不明白你想做什么,你现在是什么,不起作用
  • @GiacomoM 我正在​​尝试将我当前的 URL 从 Issues.php?Project=name&ID=3 重写为“Issues/name/3”
  • 我还是不明白。我很确定你误解了 RewriteRule 的作用。
  • 我以前对一个变量做过类似的事情。
  • 你的第二次尝试没问题,我刚刚测试过了

标签: php apache mod-rewrite url-rewriting


【解决方案1】:

不要打扰 .htacces,将所有内容重定向到一个 php 文件,并在此文件中使用标头 (....) 重定向;如果您要移动到另一台服务器(例如 windows),则更容易,并且您不需要稍后从 .htaccess 转换这么多行。

RewriteEngine on
RewriteBase /

# Redirect to /
RewriteCond %{REQUEST_FILENAME} index.php
RewriteRule ^index.php$ http://%{HTTP_HOST}/ [R=301,L]

# Display already existing files and folders
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*) $1 [NC,QSA,L]

# Rewrite all urls
RewriteRule ^(.*)/?$ router.php?url=$1 [NC,L,QSA]

# Favicon
RewriteRule ^favicon\.ico$ /favicon/favicon.ico [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2019-03-19
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2019-03-31
    相关资源
    最近更新 更多