| |
— | bugzilla [2014/11/24 01:14] (current) – created 0.0.0.0 |
---|
| ====== Bugzilla ====== |
| |
| ===== Pretty URLs ===== |
| Using Apache's mod_rewrite, it is possible to give Bugzilla pretty URLs for certain pages. |
| * <code>/assigned-to/me@example.com/</code> lists all bugs that are assigned to the specified email address |
| * <code>/reported-by/me@example.com/</code> lists all bugs that were reported by the specified email address |
| * <code>/new-bug/</code> redirects to the page listing all products to create a new bug report about |
| * <code>/new-bug/Product Name/</code> shows the form to create a new bug for the specified product |
| * <code>/graph/</code> shows our Open Bugs vs. Resolved Bugs graph |
| * <code>/open/</code> lists all open (new/assigned/etc.) bugs |
| * <code>/unassigned/</code> lists all unassiged (i.e. just the 'new' status) bugs |
| * <code>/fixed/</code> lists all fixed (resolved-fixed) bugs |
| * <code>/123/</code> shows bug #123 |
| |
| ==== .htaccess ==== |
| The .htaccess (mod_rewrite) code needed to accomplish this is: |
| {{File|.htaccess|<syntax lang="apache"> |
| <IfModule mod_rewrite.c> |
| RewriteEngine on |
| |
| #Need this because we're symlinked |
| RewriteBase /bugs/ |
| |
| #And enter_bug.cgi?product=Foo -> /new-bug/Foo/ |
| RewriteCond %{QUERY_STRING} ^product=([[A-Za-z0-9%\+\-_]]+)$ |
| RewriteRule enter_bug\.cgi new-bug/%1/? [[L,R=301,NE]] |
| |
| #Move /new-bug/ to enter_bug.cgi (i.e. new-bug without a product specified) |
| RewriteRule new-bug/?$ enter_bug.cgi [[L,R=301,NE]] |
| |
| #Alternative rules for POSTed forms |
| RewriteCond %{REQUEST_URI} (post_bug|process_bug)\.cgi |
| RewriteRule .+/(.+) $1 [[L,NE]] |
| |
| #Move show_bug.cgi?id=123 -> /123/ |
| RewriteCond %{QUERY_STRING} ^id=([[0-9]]+)$ |
| RewriteRule show_bug\.cgi %1/? [[L,R=301,NE]] |
| |
| #This fixes CSS/etc. and also permanently redirects link destinations (e.g. /assigned-to/foo@example.com/report.cgi to /report.cgi) |
| RewriteRule (assigned-to|reported-by)/.+@[[a-zA-Z0-9\-\.]]+/(.+) $2 [[L,R=301,NE]] |
| RewriteRule (new-bug)/[[^/]]+/(.+) $2 [[L,R=301,NE]] |
| RewriteRule (open|unassigned|fixed|graph|[[0-9]]+)/(.+) $2 [[L,R=301,NE]] |
| |
| #Append a trailing slash if necessary |
| RewriteRule (assigned-to|reported-by)/(.+@[[a-zA-Z0-9\-\.]]+)$ $1/$2/ [[L,R=301,NE]] |
| RewriteRule (new-bug)/([[^/]]+)$ $1/$2/ [[L,R=301,NE]] |
| RewriteRule (open|unassigned|fixed|graph|[[0-9]]+)$ $1/ [[L,R=301,NE]] |
| |
| #Make the actual assigned-to etc. URLs work |
| RewriteRule assigned-to/(.+@[[a-zA-Z0-9\-\.]]+)/$ buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Product+One&product=Product+Two&product=Product+Three&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=exact&email1=$1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Importance&field0-0-0=noop&type0-0-0=noop&value0-0-0= [[NE]] |
| RewriteRule reported-by/(.+@[[a-zA-Z0-9\-\.]]+)/$ buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Product+One&product=Product+Two&product=Product+Three&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED&resolution=---&emailreporter1=1&emailtype1=exact&email1=$1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= [[NE]] |
| |
| RewriteRule new-bug/(.+)/$ enter_bug.cgi?assigned_to=&blocked=&bug_file_loc=http\%3A\%2F\%2F&bug_severity=normal&bug_status=NEW&comment=&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text\%2Fplain&data=&deadline=&dependson=&description=&estimated_time=0.0&form_name=enter_bug&maketemplate=Remember+values+as+bookmarkable+template&op_sys=All&priority=P3&product=$1&rep_platform=All&short_desc=&version= [[NE]] |
| |
| RewriteRule graph/$ chart.cgi?category=Sihnon&datefrom=&dateto=&label0=CURRENTLY_OPEN&label1=RESOLVED&line0=27&line1=5&name=24&subcategory=Hosts&action=wrap&width=1000&height=650 [[NE]] |
| RewriteRule open/$ buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Product+One&product=Product+Two&product=Product+Three&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&resolution=WORKSFORME&resolution=---&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= [[NE]] |
| RewriteRule unassigned/$ buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Product+One&product=Product+Two&product=Product+Three&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=UNCONFIRMED&bug_status=NEW&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= [[NE]] |
| RewriteRule fixed/$ buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Product+One&product=Product+Two&product=Product+Three&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= [[NE]] |
| |
| #The &dummy is needed to prevent the "show_bug.cgi?id=123 -> /123/" rule writing it BACK to /123/ |
| RewriteRule ^([[0-9]]+)/?$ show_bug.cgi?id=$1&dummy [[L]] |
| </IfModule> |
| </syntax>}} |
| |
| |
| Note that in certain places the products need to be listed. These should be entered in the form "<code>product=Product+One&product=Product+Two&product=Product+Three</code>". Additionally, the <code>/graph/</code> rule will need editing to match your own graph configuration. And finally, you only need the "<code>RewriteBase</code>" line if the URLs that you use to access Bugzilla don't match up with the filesystem - e.g. if you use a symlink to point Apache at the Bugzilla files. |